【问题标题】:acf field data in do_shortcode not populatingdo_shortcode 中的 acf 字段数据未填充
【发布时间】:2018-10-07 01:34:33
【问题描述】:
我正在使用 WordPress 高级自定义字段插件。我有一个定制的下载按钮和简码。现在我正在使用 ACF 字段来填充下载 btn 短代码。一切似乎都正常,下载按钮按预期显示。唯一的问题是 ACF 字段没有填充到简码中,而是显示在简码之外。
<?php
if (get_field('dn_btn_url1')) {
echo do_shortcode( '[download_btn url="'.get_field('dn_btn_url1').'" filename="'.get_field('dn_btn_txt1').'"]' );
}
?>
没有 if 语句的代码按预期工作,但它不隐藏短代码。
【问题讨论】:
标签:
php
wordpress
advanced-custom-fields
【解决方案1】:
您可以使用 sprintf 函数来做到这一点,请尝试一次
<?php
if(get_fiedl('dn_btn_url1')) {
$url = get_field('dn_btn_url1');
$filename = get_field('dn_btn_txt1');
$shortcode = sprintf(
'[download_btn url="'.$url.'" ,
filename="'.$filename.'"]');
echo do_shortcode( $shortcode );
?>
【解决方案2】:
get_field 函数从全局 $post 对象获取帖子 ID,因此当它被传递到简码函数时,它似乎无法获得正确的帖子 ID。尝试将字段中的 URL 放入变量中,以便 URL 已经通过函数传递到短代码函数中。
试试这个:
<?php
if (get_field('dn_btn_url1')) {
$url = get_field('dn_btn_url1');
echo do_shortcode( '[download_btn url="' . $url . '" filename="' . $url . '"]' );
}
?>