0

我正在尝试使用 Wordpress 的高级自定义字段“真/假”插件来根据用户的推荐 ID 显示不同的内容。

1)如果有参考。ID&“创建”为真,显示“付费导航” 2)如果有参考。ID & "Create" 为 False,显示 "Main Nav" 3) 如果有别的,什么也不显示。

一切正常,除了项目#1。启用 True/False 时,会出现两个导航菜单。

<?php while(the_repeater_field('referrers', 'options')): ?>         
    <?php if(isset($_COOKIE['referrer']) && get_sub_field('create') == true) {
        $referrer    = json_decode(stripslashes($_COOKIE['referrer']));
            echo wp_nav_menu( array('container' => false, 'menu' => 'Paid Nav' ) );

} elseif(isset($_COOKIE['referrer']) && get_sub_field('create') == false) {
        $referrer    = json_decode(stripslashes($_COOKIE['referrer']));
            echo wp_nav_menu( array('container' => false, 'menu' => 'Main Nav' ) );

} else {
echo '';

}?>
<?php endwhile; ?>
4

2 回答 2

0

问题是你在循环中有显示菜单。可能发生的情况是,它会在某个时刻显示第一个,而在另一个时刻显示第二个。这是一种不同的编码方式:

<?php
if(isset($_COOKIE['referrer'])):
  $menu_to_display = 'Main Nav';
  $referrer    = json_decode(stripslashes($_COOKIE['referrer']));
  while(the_repeater_field('referrers', 'options')):
    if(get_sub_field('create'))
      $menu_to_display = 'Paid Nav';
  endwhile;
  echo wp_nav_menu( array('container' => false, 'menu' => $menu_to_display ) );
endif;
?>

这样,菜单只显示一次,并且只显示一个菜单。此外,它使用的测试更少。回家有帮助。

于 2013-11-08T08:37:54.623 回答
0

像这样?

<?php
  $menu_to_display = 'Main Nav';
  if(isset($_COOKIE['referrer'])):
    $referrer    = json_decode(stripslashes($_COOKIE['referrer']));
    while(the_repeater_field('referrers', 'options')):
      if(get_sub_field('create'))
        $menu_to_display = 'Paid Nav';
    endwhile;
  endif;
  echo wp_nav_menu( array('container' => false, 'menu' => $menu_to_display ) );
?>
于 2013-11-09T22:17:54.847 回答