【问题标题】:How can I edit this code so that it only affects the top menu and not the main menu on my wordpress site?如何编辑此代码,使其仅影响我的 wordpress 网站上的顶部菜单而不影响主菜单?
【发布时间】:2019-10-27 11:03:51
【问题描述】:

我正在使用 OceanWP 主题来创建我的网站。

我的主页上有两个不同的菜单,一个是顶部菜单,一个是主菜单。 http://prntscr.com/pofn5r

我希望顶部菜单为已登录用户和已注销用户显示不同的选项。

我使用了以下代码,这些代码放在了functions.php 文件中。我还为登录和注销的用户创建了两个不同的菜单:


if( is_user_logged_in() ) {
$args['menu'] = 'logged_in';
} else {
$args['menu'] = 'logged_out';
}
return $args;
}
add_filter( 'wp_nav_menu_args', 'my_wp_nav_menu_args' );

它似乎可以为已登录的用户和已注销的用户显示不同的菜单,但问题是它还会更改主菜单和顶部菜单。

prntscr.com/podv5e

我希望主菜单保持不变,只是根据用户是否登录而改变顶部菜单。

我想知道是否有办法修改代码,使其只影响顶部菜单而不影响主菜单?

【问题讨论】:

标签: php wordpress wordpress-theming


【解决方案1】:

检查 theme_location 参数以匹配正确的导航。

https://codex.wordpress.org/Plugin_API/Filter_Reference/wp_nav_menu_args

【讨论】:

  • 嗨,乔丹·考利,谢谢。我只是有点不确定主题位置是什么?我在哪里可以找到那个?
  • @Jas 在主题中,nav 注册的地方会有一个特定nav 区域的名字,你也可以print_r $args 来查看页面上显示的不同值。如果不查看您的主题代码,很难了解更多信息。
【解决方案2】:

我下载了OceanWP的免费版本,在functions.php中有这段代码

// Register navigation menus
register_nav_menus( array(
    'topbar_menu'     => esc_html__( 'Top Bar', 'oceanwp' ),
    'main_menu'       => esc_html__( 'Main', 'oceanwp' ),
    'footer_menu'     => esc_html__( 'Footer', 'oceanwp' ),
    'mobile_menu'     => esc_html__( 'Mobile (optional)', 'oceanwp' )
) );

所以你会想要定位“topbar_menu”

【讨论】:

  • 非常感谢您:) 我尝试将 topbar_menu 添加到代码中,但它仍然不适合我。我想我可能没有正确使用它。我在代码前面添加了 if ( $args['theme_location'] === 'top-menu' ) { ,我只是想知道我会用 'topbar_menu' 替换哪个部分?
猜你喜欢
  • 1970-01-01
  • 2018-05-08
  • 2022-01-23
  • 1970-01-01
  • 2012-11-30
  • 1970-01-01
  • 2021-06-30
  • 2019-06-06
  • 1970-01-01
相关资源
最近更新 更多