在菜单创建页面中使用wp_logout_url()

时间:2015-10-19 作者:iSaumya

谁能告诉我如何利用wp_logout_url() 在wordpress的菜单创建者页面中?由于菜单创建页面不支持php,我不能echo wp_logout_url( home_url() ) 在“自定义链接”下。

此外,我不能使用以下函数

add_filter( \'wp_nav_menu_items\', \'wti_loginout_menu_link\', 10, 2 );

function wti_loginout_menu_link( $items, $args ) {
   if ($args->theme_location == \'primary\') {
      if (is_user_logged_in()) {
         $items .= \'<li class="right"><a href="\'. wp_logout_url() .\'">Log Out</a></li>\';
      } else {
         $items .= \'<li class="right"><a href="\'. wp_login_url(get_permalink()) .\'">Log In</a></li>\';
      }
   }
   return $items;
} 
因为它不符合我的需要,我必须添加注销链接作为下拉菜单,而不是作为父菜单,并且也将只显示在某些页面上。如果有人能告诉我怎么去拿wp_logout_url() wp菜单创建页面中的数据。

非常感谢您的帮助。

2 个回复
最合适的回答,由SO网友:jas 整理而成

添加带有自定义链接的子菜单,/wp-login?action=logout, 如下图所示:

enter image description here

在中添加如下代码functions.php:

function wpa_remove_menu_item( $items, $menu, $args ) {
    if ( is_admin() || ! is_user_logged_in() ) 
        return $items;
    foreach ( $items as $key => $item ) {
        if ( \'Login / Register\' == $item->title ) 
            unset( $items[$key] );
        if ( \'Logout\' == $item->title ) {
            $items[$key]->url = wp_logout_url();
        }
    }
    return $items;
}
add_filter( \'wp_get_nav_menu_items\', \'wpa_remove_menu_item\', 10, 3 );

SO网友:iSaumya

下面是我为解决这个问题所做的,我认为在解决这个问题的同时,我有了一个解决所有类似问题的想法。

我下载了一个叫Shortcodes in Menus.

然后在我的functions.php 文件中,我创建了一个小的快捷码来解决此问题:

/* Shortcode to fetch the logout URL */
add_shortcode( \'fetch_logout_url\', function() {
    return wp_logout_url( home_url() );
} );
瞧!问题解决了,做起来很简单。

相关推荐

无法将设置添加到“NAV_MENUS”定制器面板

我试图在自定义程序的“菜单”面板中添加一个复选框,但由于某些原因,它没有显示出来。如果我尝试将其从“nav\\u菜单”更改为“title\\u tagline”或“colors”,复选框会显示得很好。是什么阻止它显示在“菜单”面板上?// add custom options to the Customizer function nssra_customizer_options($wp_customize) { // add \"menu primary flex\" checkb