Customize existing menu item

时间:2016-06-10 作者:jcal

我正在尝试使用插件操作现有的主菜单。

结果应该是:如果插件被激活,它会将“登录”按钮编辑为有条件的:

if something is true
     show profile picture and name
else
     show login button
要达到这个结果还有很长的路要走,现在我正在尝试使用custom Walker class

这是我的代码:

add_action( \'wp_loaded\', \'edit_that_shit\');

function edit_that_shit(){
    wp_nav_menu(
        array(
            \'theme_location\' => \'primary\',
            \'menu\' => \'Primary Navigation\',
            \'walker\' => new Custom_Walker()
        )
    );
}


class Custom_Walker extends Walker_Nav_Menu
{
     public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 )
     { ... }
}
但唯一发生的事情是,WordPress在主菜单旁边创建了一个新菜单,页面顶部有相同的项目。

1 个回复
SO网友:cjbj

考虑到您希望在wp_nav_menu 输出,您的最佳选择是使用wp_nav_menu_items 按照注释中的建议进行筛选。这将允许您在html上进行搜索和替换。

add_filter (\'wp_nav_menu_items\',\'wpse229358_filter_menu\');
function wpse229358_filter_menu ($items,$args) {
  $search  = \'\'; // html string of button
  $replace = \'\'; // html string of picture+name
  if (yourcondition) {
    str_replace ($search,$replace,$items);
    }
  }

相关推荐

WordPress中声明SplitMenuWalker::Walk($Elements,$max_Depth)时出现警告

我开始在WordPress网站上收到以下错误:警告:SplitMenuWalker::walk($elements,$max\\u depth)的声明应与/home/relati67/public\\u html/wp content/themes/mentis/inc/mega menu/split menu中的walk::walk($elements,$max\\u depth,$args)兼容。php第0行我不知道在这里该怎么办。我发现了一个具有类似内容的线程,但错误指向特定行(不是第0行),并且不