【问题标题】: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 . '"]' );
      
        }
      
      ?>
      

      【讨论】:

        猜你喜欢
        • 2016-04-16
        • 2011-05-03
        • 2019-10-26
        • 2020-03-09
        • 1970-01-01
        • 2022-11-26
        • 2021-05-06
        • 1970-01-01
        • 2021-07-24
        相关资源
        最近更新 更多