更改/过滤导航菜单链接的文本


Change/filter text of link of navigation menu

我有什么:

我有一个登录/注销链接在一个标准的WordPress导航菜单。到目前为止,我已经有条件地将URL过滤为必要的登录或注销URL。

我需要什么:

我还需要有条件地更改导航菜单中链接(菜单项)的文本值。

<标题>我的代码:
add_filter( 'nav_menu_link_attributes', 'menu_override_b', 10, 3 );
function menu_override_b( $atts, $item, $args ) {
    if ( is_user_logged_in() ) {
        $url = wp_logout_url();
        $newlink = str_replace("http://--loginout--", $url, $atts[href]);
        $atts[href] = $newlink; 
        //None of the following work...
        /*
        $title ="Logout";
        $atts[title] = $title;  
        $atts[post_excerpt] = $title;
        $atts[description] = $title;
        $atts[attr_title] = $title;
        $atts[post_title] = $title;
        $atts[post_content] = $title;
        */
    }
    else{
        $url = "/somewhere/else";
        $newlink = str_replace("http://--loginout--", $url, $atts[href]);
        $atts[href] = $newlink; 
        //None of the following work...
        /*
        $title ="Login";
        $atts[title] = $title;  
        $atts[post_excerpt] = $title;
        $atts[description] = $title;
        $atts[attr_title] = $title;
        $atts[post_title] = $title;
        $atts[post_content] = $title;
        */
    }   

    return $atts;
}

WordPress菜单项属性列表

我知道这是一个旧的帖子,但是如果有人在看…

您需要将代码中的$atts[href]替换为$atts['href']

我使用了这个非常好的插件

https://wordpress.org/plugins/menu-items-visibility-control/

这允许你设置一个回调来有条件地隐藏菜单项,我要做的是当他们登录时有一个菜单项,当他们注销时另一个菜单项,只是交换它们。

我必须查找你需要回调的确切代码,但它应该在主题函数文件中,然后你只需在导航项上运行该函数,按照插件的说明。

这是一个有点不同的方法,然后你正在做的,但它可能是有点干净,保持导航项分开和功能齐全(不依赖于外部代码的内容,只有他们的可见性)

也很容易扩展到其他链接,

希望有帮助。

——update查看它,它可能已经内置了您需要的功能。我用它从第三方应用程序等产品订阅。其实是一样的