在header.php中使用WordPress ACF转发器

时间:2018-10-18 13:51:23

标签: php wordpress advanced-custom-fields

在ACF中,我有一个带有单选按钮字段的中继器“ slider”。这将显示在网站的主页上。

我想在header.php中输出单选按钮字段。这是我尝试过的方法:

<?php
  if( have_rows('slider',$post->ID) ):
  while ( have_rows('slider',$post->ID) ) : the_row();
    if(get_sub_field('logo_type',$post->ID) == 'light' ) {
      echo '<p>Light</p>';
    }
  endwhile;
  endif;
?>

即使我尝试var_dump(get_sub_field('logo_type',$post->ID));

,它也会变成空白

我也尝试过:

<?php
  if( have_rows('slider',$post->ID) ):
  global $wp_query;
  $postid = $wp_query->post->ID;
  while ( have_rows('slider',$postid) ) : the_row();
    if(get_sub_field('logo_type',$postid) == 'light' ) {
      echo '<p>Light</p>';
    }
  endwhile;
  endif;
?>

我在这里做什么错了?

3 个答案:

答案 0 :(得分:0)

您尝试没有此$ post-> ID

<?php
 if( have_rows('slider') ):
  while ( have_rows('slider') ) : the_row();
   if(get_sub_field('logo_type') == 'light' ) {
      echo '<p>Light</p>';
   }
  endwhile;
 endif;
?>

答案 1 :(得分:0)

我不知道这是否可以解决您的问题,但是get_sub_field的第二个参数不应该是发布ID,而是格式值。因此,在这种情况下,您可以将其留空。

<?php
  if( have_rows('slider',$post->ID) ):
  global $wp_query;
  $postid = $wp_query->post->ID;
  while ( have_rows('slider',$postid) ) : the_row();
    if(get_sub_field('logo_type') == 'light' ) {
      echo '<p>Light</p>';
    }
  endwhile;
  endif;
?>

我还建议调试您从$ postid获得的ID。

<?php
  global $wp_query;
  $postid = $wp_query->post->ID;
  echo $postid;
?>

答案 2 :(得分:0)

我认为您需要在菜单中添加自定义字段。即使用标题创建字段组并分配菜单等于标题菜单名称,然后使用以下代码调用该字段

    $menu = wp_get_nav_menu_object('menuid');//replace with your menu id.
    the_field('logo_type',$menu);

您可以在任何地方访问它,并且可以在Apperance-> Menus-> Menu-name-> acf-field-name

中看到此字段