将锚定标记替换为跨距标记

时间:2015-08-25 作者:nomeer

我已经创建了包含许多项和子项的自定义菜单,标记如下<a href="#">Item</a>但对于父元素,我需要用span标记替换锚点标记,span标记具有一些用于样式设计的类,仅用于我的父元素。应该是这样的,<span class="my-class">Parent Element</span>. 有谁能指引我吗?

1 个回复
最合适的回答,由SO网友:David Gallagher 整理而成

以下代码添加到主题中functions.php 会做你想做的事。

add_filter( \'walker_nav_menu_start_el\', \'my_walker_nav_menu_start_el\', 10, 4 );
function my_walker_nav_menu_start_el( $item_output, $item, $depth, $args ) {
    if ( empty( $item->url ) || \'#\' === $item->url ) {
        $item_output = $args->before;
        $item_output .= \'<span class="my-class">\';
        $item_output .= $args->link_before . apply_filters( \'the_title\', $item->title, $item->ID ) . $args->link_after;
        $item_output .= \'</span>\';
        $item_output .= $args->after;
    }
    return $item_output;
}
这应该可以找到没有URL或# 作为URL,并将链接替换为<span class="my-class">...</span>.

这并不特别适用于父菜单项,但只要您使用自定义链接且不输入URL(或输入#) 对于您的父菜单项,它应该适合您。

相关推荐

用标准的干净文件替换NAV-menus.php文件?

我是一个自学成才的wordpress网站设计师,请原谅我的无知。我为一个客户开发的几个网站最近被一个印尼黑客组织破坏了(很有趣!)。客户端没有更新wordpress安装和其他一些危及安全的事情。遗憾的是,没有网站的清理备份。网络主机给了我一个包含恶意软件扫描结果的文本文件。看起来很多受影响的文件都是导航菜单。网站的php文件。文本文件中显示的扫描结果示例如下:“[主目录]/[网站文件夹名称]/wp includes/nav-menu.php:SL-php-INJECTOR-1-ejw.UNOFFICIAL