在 do_shortcode 中添加自定义字段
Add custom field inside a do_shortcode
我正在尝试将联系表单添加到带有联系表单 7 的页面模板中。但是,我希望目标电子邮件来自我创建的自定义字段。
拉取自定义字段数据的代码是这样的:
<?php the_field('website_address'); ?>
让我 select 模板级别的目标电子邮件的简码是:
<?php echo do_shortcode('[contact-form-7 id="123" title="Contact Form" destination-email="xxxxxx@example.com"]'); ?>
所以我需要将 website_address 添加到简码中。我尝试了以下方法:
<?php echo do_shortcode('[contact-form-7 id="123" title="Contact Form" destination-email="<?php the_field('website_address'); ?>"]'); ?>
但是它在 PHP 标签中有一个 PHP 标签,所以它不起作用...
所以我尝试了这些:
<?php echo do_shortcode('[contact-form-7 id="123" title="Contact Form" destination-email="the_field('website_address')"]'); ?>
<?php echo do_shortcode('[contact-form-7 id="123" title="Contact Form" destination-email="get_field('website_address')"]'); ?>
<?php echo do_shortcode('[contact-form-7 id="123" title="Contact Form" destination-email=".get_field('website_address')."]'); ?>
<?php echo do_shortcode('[contact-form-7 id="123" title="Contact Form" destination-email="'.get_field('website_address').'"]'); ?>
None 其中工作正常,有些甚至破坏了页面。
我正在努力寻找答案,所以想知道是否有人可以启发我 - 我什至可能以错误的方式思考这一切!非常感谢您的观看:)
编辑
我需要包含一个功能,我已将其添加到 functions.php,但它仍然无济于事...
add_filter( 'shortcode_atts_wpcf7', 'custom_shortcode_atts_wpcf7_filter', 10, 3 );
function custom_shortcode_atts_wpcf7_filter( $out, $pairs, $atts ) {
$my_attr = 'destination-email';
if ( isset( $atts[$my_attr] ) ) {
$out[$my_attr] = $atts[$my_attr];
}
return $out;
}
来自页面:https://contactform7.com/getting-default-values-from-shortcode-attributes/
好的,我找到了一种方法,如下所述:https://wordpress.org/support/topic/getting-emaip-recipient-from-shortcode/
在页面或post要显示表单的地方添加带有目标电子邮件的简码:
[contact-form-7 id="123" title="Contact Form" destination-email="xxxxxx@example.com"]
将以下代码添加到主题 functions.php 或您的自定义插件中。
add_filter( 'shortcode_atts_wpcf7', 'custom_shortcode_atts_wpcf7_filter', 10, 3 );
函数 custom_shortcode_atts_wpcf7_filter( $out, $pairs, $atts) {
$my_attr = 'destination-email';
如果(isset($atts[$my_attr])){
$out[$my_attr] = $atts[$my_attr];
}
return $out;
}
3. 将此代码添加到表单选项卡:
[email* destination-email default:shortcode_attr]
//如果你想隐藏这个字段,你可以使用这个代码:
[hidden destination-email default:shortcode_attr]
- 在 cforms7 邮件选项卡的“收件人”字段中添加代码 [destination-email]。
如果您使用隐藏字段,它会显示“无效的邮箱语法”错误,但在我的情况下,我可以忽略它,因为它有效。
如果带有隐藏字段的收件人字段不起作用,您可以将 id 添加到电子邮件简码中:
[email* destination-email default:shortcode_attr id:hidefield]
并使用 css 隐藏字段:
#hidefield {
display: none;
}
然后我就用了这个:
<?php echo do_shortcode('[contact-form-7 id="123" title="Contact Form" destination-email="'.get_field('email_address').'"]'); ?>
添加来自自定义 post 类型的电子邮件地址:)
谢谢大家的回答!
我正在尝试将联系表单添加到带有联系表单 7 的页面模板中。但是,我希望目标电子邮件来自我创建的自定义字段。
拉取自定义字段数据的代码是这样的:
<?php the_field('website_address'); ?>
让我 select 模板级别的目标电子邮件的简码是:
<?php echo do_shortcode('[contact-form-7 id="123" title="Contact Form" destination-email="xxxxxx@example.com"]'); ?>
所以我需要将 website_address 添加到简码中。我尝试了以下方法:
<?php echo do_shortcode('[contact-form-7 id="123" title="Contact Form" destination-email="<?php the_field('website_address'); ?>"]'); ?>
但是它在 PHP 标签中有一个 PHP 标签,所以它不起作用...
所以我尝试了这些:
<?php echo do_shortcode('[contact-form-7 id="123" title="Contact Form" destination-email="the_field('website_address')"]'); ?>
<?php echo do_shortcode('[contact-form-7 id="123" title="Contact Form" destination-email="get_field('website_address')"]'); ?>
<?php echo do_shortcode('[contact-form-7 id="123" title="Contact Form" destination-email=".get_field('website_address')."]'); ?>
<?php echo do_shortcode('[contact-form-7 id="123" title="Contact Form" destination-email="'.get_field('website_address').'"]'); ?>
None 其中工作正常,有些甚至破坏了页面。
我正在努力寻找答案,所以想知道是否有人可以启发我 - 我什至可能以错误的方式思考这一切!非常感谢您的观看:)
编辑
我需要包含一个功能,我已将其添加到 functions.php,但它仍然无济于事...
add_filter( 'shortcode_atts_wpcf7', 'custom_shortcode_atts_wpcf7_filter', 10, 3 );
function custom_shortcode_atts_wpcf7_filter( $out, $pairs, $atts ) {
$my_attr = 'destination-email';
if ( isset( $atts[$my_attr] ) ) {
$out[$my_attr] = $atts[$my_attr];
}
return $out;
}
来自页面:https://contactform7.com/getting-default-values-from-shortcode-attributes/
好的,我找到了一种方法,如下所述:https://wordpress.org/support/topic/getting-emaip-recipient-from-shortcode/
在页面或post要显示表单的地方添加带有目标电子邮件的简码:
[contact-form-7 id="123" title="Contact Form" destination-email="xxxxxx@example.com"]
将以下代码添加到主题 functions.php 或您的自定义插件中。
add_filter( 'shortcode_atts_wpcf7', 'custom_shortcode_atts_wpcf7_filter', 10, 3 ); 函数 custom_shortcode_atts_wpcf7_filter( $out, $pairs, $atts) { $my_attr = 'destination-email'; 如果(isset($atts[$my_attr])){ $out[$my_attr] = $atts[$my_attr]; } return $out;
} 3. 将此代码添加到表单选项卡:
[email* destination-email default:shortcode_attr]
//如果你想隐藏这个字段,你可以使用这个代码:
[hidden destination-email default:shortcode_attr]
- 在 cforms7 邮件选项卡的“收件人”字段中添加代码 [destination-email]。
如果您使用隐藏字段,它会显示“无效的邮箱语法”错误,但在我的情况下,我可以忽略它,因为它有效。
如果带有隐藏字段的收件人字段不起作用,您可以将 id 添加到电子邮件简码中:
[email* destination-email default:shortcode_attr id:hidefield]
并使用 css 隐藏字段:
#hidefield {
display: none;
}
然后我就用了这个:
<?php echo do_shortcode('[contact-form-7 id="123" title="Contact Form" destination-email="'.get_field('email_address').'"]'); ?>
添加来自自定义 post 类型的电子邮件地址:)
谢谢大家的回答!