お問い合わせフォーム7には、今日の日付を取得するための[_date]などのいくつかのショートコードがあります。でも今から1週間後の日付を表示したいです。
そのため、[next_week]と呼ばれるContact form 7へのカスタムショートコードを作成する必要があり、受信した電子メールに正しい日付が表示されます。
お問い合わせフォーム7のカスタムショートコードをどこでどのように作成しますか?
お問い合わせフォーム7には、今日の日付を取得するための[_date]などのいくつかのショートコードがあります。でも今から1週間後の日付を表示したいです。
そのため、[next_week]と呼ばれるContact form 7へのカスタムショートコードを作成する必要があり、受信した電子メールに正しい日付が表示されます。
お問い合わせフォーム7のカスタムショートコードをどこでどのように作成しますか?
以下を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]
これで、メッセージ本文で使用できます。
これは応答パーティに少し遅れていますが、フォームとメッセージ本文にカスタムショートコードを追加したいときにこの投稿を見続けます。ショートコードを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;
}
CF7には、フォームタグ(連絡先フォーム自体)とメールタグ(電子メール)の2種類のタグがあります—続きを読む。
カスタムフォームタグ:
カスタムフォームタグを追加するには、アクションフックのwpcf7_add_form_tag()
関数を使用できます(続きを読む)。wpcf7_init
受け入れられた回答のwpcf7_add_shortcode()
関数は非推奨と見なされ、この関数に置き換えられます。
カスタムメールタグ:
カスタムメールタグを追加するための組み込み機能は見つかりませんでしたが、ここには複数の可能な回避策があると思います。
カスタムショートコードを有効にします(事前にショートコードハンドラーを作成することを忘れないでください):
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 );
[my-custom-form-tag-with-some-prepopulated-data]
ます。上記のように、カスタムフォームタグをに登録する必要がありwpcf7_add_form_tag()
ます。私の解決策は簡単です。必要なショートコードを実行して、連絡フォーム領域に配置します。次のことを忘れないでください。functions.phpに次のコードのみを配置すると、ショートコードが機能します。
add_filter('wpcf7_form_elements'、'do_shortcode');
私は以前にやったことはありませんが、ショートコードはワードプレス自体によって管理されていると思います(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/