12

お問い合わせフォーム7には、今日の日付を取得するための[_date]などのいくつかのショートコードがあります。でも今から1週間後の日付を表示したいです。

そのため、[next_week]と呼ばれるContact form 7へのカスタムショートコードを作成する必要があり、受信した電子メールに正しい日付が表示されます。

お問い合わせフォーム7のカスタムショートコードをどこでどのように作成しますか?

4

5 に答える 5

19

以下をfunctions.phpに追加します

wpcf7_add_shortcode('custom_date', 'wpcf7_custom_date_shortcode_handler', true);

function wpcf7_custom_date_shortcode_handler($tag) {
    if (!is_array($tag)) return '';

    $name = $tag['name'];
    if (empty($name)) return '';

    $next_week = date('Y-m-d', time() + (60*60*24*7)); 
    $html = '<input type="hidden" name="' . $name . '" value="' . $next_week . '" />';
    return $html;
}

CF7GUIタイプの[フォーム]フィールドに表示されます[custom_date next_week]

[next_week]これで、メッセージ本文で使用できます。

于 2012-11-02T09:47:59.423 に答える
2

これは応答パーティに少し遅れていますが、フォームとメッセージ本文にカスタムショートコードを追加したいときにこの投稿を見続けます。ショートコードをCF7に特別に登録せずに、多くの場合メッセージ本文にのみ挿入できるようにしたかったのです(CF7ではできないようです)。

これが私が最終的にそれをした方法です:

// Allow custom shortcodes in CF7 HTML form
add_filter( 'wpcf7_form_elements', 'dacrosby_do_shortcodes_wpcf7_form' );
function dacrosby_do_shortcodes_wpcf7_form( $form ) {
    $form = do_shortcode( $form );
    return $form;
}

// Allow custom shortcodes in CF7 mailed message body
add_filter( 'wpcf7_mail_components', 'dacrosby_do_shortcodes_wpcf7_mail_body', 10, 2 );
function dacrosby_do_shortcodes_wpcf7_mail_body( $components, $number ) {
    $components['body'] = do_shortcode( $components['body'] );
    return $components;
};

// Add shortcode normally as per WordPress API
add_shortcode('my_code', 'my_code_callback');
function my_code_callback($atts){
    extract(shortcode_atts(array(
        'foo' => 'bar'
    ), $atts));

    // do things
    return $foo;
}
于 2015-10-28T03:13:28.117 に答える
0

CF7には、フォームタグ(連絡先フォーム自体)とメールタグ(電子メール)の2種類のタグがあります—続きを読む


  1. カスタムフォームタグ

    カスタムフォームタグを追加するには、アクションフックのwpcf7_add_form_tag()関数を使用できます(続きを読む)。wpcf7_init

    受け入れられた回答のwpcf7_add_shortcode()関数は非推奨と見なされ、この関数に置き換えられます。

  2. カスタムメールタグ

    カスタムメールタグを追加するための組み込み機能は見つかりませんでしたが、ここには複数の可能な回避策があると思います。

    1. カスタムショートコードを有効にします(事前にショートコードハンドラーを作成することを忘れないでください):

      • メールコンポーネントの場合、DACrosbyの回答によると。
      • メール全体(すべてのコンポーネント)の場合、wpcf7_special_mail_tagsフィルターを使用します。

    function my_special_mail_tag( $output, $name, $html ) {
        if ( 'myshortcode' === $name ) {
            $output = do_shortcode( "[$name]" );
        }
        return $output;
    }
    add_filter( 'wpcf7_special_mail_tags', 'my_special_mail_tag', 10, 3 );
    
    1. 事前入力されたデータを含むカスタムの非表示フォームタグをフォームに追加し、それをメールで使用し[my-custom-form-tag-with-some-prepopulated-data]ます。上記のように、カスタムフォームタグをに登録する必要がありwpcf7_add_form_tag()ます。
于 2019-09-05T15:30:12.860 に答える
0

私の解決策は簡単です。必要なショートコードを実行して、連絡フォーム領域に配置します。次のことを忘れないでください。functions.phpに次のコードのみを配置すると、ショートコードが機能します。

add_filter('wpcf7_form_elements'、'do_shortcode');

于 2021-04-21T03:12:42.823 に答える
-3

私は以前にやったことはありませんが、ショートコードはワードプレス自体によって管理されていると思います(CF7のようなプラグインの場合でも)。

簡単なショートコードを作成する例は次のとおりです。

//[foobar]
function foobar_func( $atts ){
 return "foo and bar";
}
add_shortcode( 'foobar', 'foobar_func' );

Functions.phpに配置されます。

詳細については、http://codex.wordpress.org/Shortcode_APIをご覧ください。

または、次のようなプラグインを使用して作業を行うことができます:http ://wordpress.org/extend/plugins/shortbus/

于 2012-11-01T14:44:01.960 に答える