do_shortcode中的acf字段数据未填充

时间:2018-04-26 11:11:55

标签: php wordpress advanced-custom-fields

我正在使用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语句的代码按预期工作,但它不会隐藏短代码。

2 个答案:

答案 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 );
?>