联系表格 7 有一些简码,例如 [_date] 来获取今天的日期。但我想显示一周后的日期。
因此,我需要为 Contact form 7 创建一个自定义简码,其中包含 [next_week] 并在收到的电子邮件中显示正确的日期。
在哪里以及如何为 Contact form 7 创建自定义简码?
联系表格 7 有一些简码,例如 [_date] 来获取今天的日期。但我想显示一周后的日期。
因此,我需要为 Contact form 7 创建一个自定义简码,其中包含 [next_week] 并在收到的电子邮件中显示正确的日期。
在哪里以及如何为 Contact form 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;
}
现在在 CF7 GUI 类型的“表单”字段中[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;
}
我的解决方案很简单。做任何你想要的短代码并将其放在联系表格区域。只是不要忘记执行以下操作:仅将以下代码放在 functions.php 中,您的短代码将起作用:
add_filter('wpcf7_form_elements', 'do_shortcode');
CF7 中有两种类型的标签:表单标签(联系表单本身)和邮件标签(电子邮件)——阅读更多。
自定义表单标签:
要添加自定义表单标签,您可以在操作挂钩上使用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()
如上所述,自定义表单标签应使用 注册。我以前没有这样做过,但我认为短代码是由 wordpress 本身管理的(即使对于像 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/