do_shortcode 中的 acf 字段数据未填充

acf field data in do_shortcode not populating

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

get_field 函数从全局 $post 对象获取 post id,所以当它被传递到短代码函数时,它似乎无法获得正确的 post 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 . '"]' );

  }

?>

您可以使用 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 );
?>