繁体   English   中英

ACF get_field()未在WordPress中返回值

[英]ACF get_field() is not returning a value in WordPress

我正在一起使用ACF和CPT。 我创建了一个短代码,将其放置在主题的文本模块中。 它运作良好。 但是,当我调用ACF get_field() ,它没有返回任何值。 我试图寻找到这个问题,并且这也是一个 ,但既不工程。

我仔细检查了ACF字段名称。 还尝试将输入类型从文本更改为数字,但仍然没有希望。

开发环境

  • WordPress版本:5.2.2(目前最新)
  • 主题/儿童主题版本:Divi 3.25.3

我创建的简码:

  <?php
    add_shortcode('RESTAURANT_MENU', 'fetch_menu_products');
    function fetch_menu_products($atts)
    {
      $atts = shortcode_atts(array(
        'category_name' => ''
      ), $atts);
      $category_name = $atts['category_name'];

      $args = array(
        'category_name' => $category_name,
        'post_type' => 'menu',
        'numberposts' => -1,
        'post_status' => 'publish'
      );

      $output = '';
      $menu_products = get_posts($args);
      foreach ($menu_products as $menu_product) {
        setup_postdata($menu_product);
        $output .= '<section class="menu-item-wrapper">';
        $output .= '<h3 class="menu-item__title">' . $menu_product->post_title . '</h3>';
        $output .= '<div class="menu-item">';
        $output .= '<div class="menu-item-description">';
        $output .= '<p class="menu-item-description__text">' . $menu_product->post_content . '</p>';
        $output .= '</div>';
        $output .= '<ul class="menu-prices-list">';
        if (get_field("regular_size_price") || get_field("large_size_price")) {
          $output .= '<li class="menu-prices-list--item">R ' . get_field("regular_size_price", $menu_product->ID)  . ' Currency</li>';
          $output .= '<li class="menu-prices-list--item">L ' . get_field("large_size_price", $menu_product->ID) . ' Currency</li>';
        }
        if (get_field("price")) {
          $output .= '<li class="menu-prices-list--item">' . get_field("price", $menu_product->ID)  . ' Currency</li>';
        }
        $output .= '</ul>';
        $output .= '</div>';
        $output .= '</section>';
      }
      wp_reset_postdata();
      return $output;
    }

请问有什么可以帮助我找出为什么它没有返回任何值吗? 谢谢。

更新:ACF位置规则

ACF位置规则

尝试使用get_post_meta()而不是get_field() 因为您已经在使用ACF然后使用此代码从post meta获取价值

get_post_meta($menu_product->ID, 'regular_size_price')[0]

有关get_post_meta()更多帮助,您可以检查此链接

如果我的假设正确,则返回$output变量时不会打印li元素。 这应该是因为你正在使用的情况下get_field theloop外功能,无需通过帖子ID中的if语句。

下面是更正的代码:

if (get_field("regular_size_price", $menu_product->ID) || get_field("large_size_price", $menu_product->ID)) {
    $output .= '<li class="menu-prices-list--item">R ' . get_field("regular_size_price", $menu_product->ID)  . ' Currency</li>';
    $output .= '<li class="menu-prices-list--item">L ' . get_field("large_size_price", $menu_product->ID) . ' Currency</li>';
}

我希望这有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM