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

Posted

技术标签:

【中文标题】更改/过滤导航菜单链接的文本【英文标题】:Change/filter text of link of navigation menu 【发布时间】:2014-08-28 06:36:07 【问题描述】:

我有什么:

我在标准 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;


List of WordPress menu item attributes

【问题讨论】:

【参考方案1】:

我知道这是一篇旧帖子,但万一有人在看......

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

【讨论】:

一直在寻找。感谢您观察必要的更正。【参考方案2】:

我在这里使用这个非常好的插件

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

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

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

这与您目前正在使用的方法有点不同,但保持导航项独立且功能齐全(不依赖于外部代码的内容,只依赖于它们的可见性)可能会更清晰

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

希望对你有帮助。

--更新看看它,它可能已经内置了您需要的功能。我将它用于从第三方应用程序订阅产品等。但实际上是相同的想法。

【讨论】:

is_user_logged_in()is_home() (不同的事情)是我需要的插件支持的仅有的两个条件。谢谢。 很高兴我能帮上忙,这是一个非常有用的功能,我不知道为什么 WordPress 没有开箱即用的类似解决方案,因为我认为这是一件很常见的事情.

以上是关于更改/过滤导航菜单链接的文本的主要内容,如果未能解决你的问题,请参考以下文章

Android以编程方式更改导航抽屉菜单项文本

jQuery导航菜单问题

更改导航抽屉中菜单项的文本颜色

哈希链接与导航菜单不匹配

Android 活动导航

读取 DOM(网页)中的位置并相应地更改导航菜单类