我正在使用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语句的代码按预期工作,但它不会隐藏短代码。
答案 0 :(得分: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 . '"]' );
}
?>
答案 1 :(得分:0)
您可以使用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 );
?>