2

我目前正在使用类似的东西:

wp_nav_menu( array(
               'theme_location' => 'primary', 
               'container' => false, 
               'items_wrap' => '<ul id="primary-main-menu" class="primary-main-menu-en">%3$s</ul>',
               'fallback_cb' => false
));

然后我得到了一个装饰精美的菜单,上面有我自己的班级等。
但现在另一个更棘手的步骤是:

  • 如何替换该菜单对象输出中的 url 链接?(替换,例如:www.domain1.comto www.domain2.com
  • 换句话说,实际上我想替换里面的字符串%3$s。如何?

注意:
我使用过walker,但我不能完全使用 walkeritems_wrap选项和/或输出失真。所以我放弃了walker。请问有什么好主意吗?

4

1 回答 1

3

无需定义自己的 Walker 类,您只需使用 filter 挂钩到默认 Walker 即可walker_nav_menu_start_el。在这里,您可以在输出链接 HTML 之前对其进行修改。

以下是您的用例的工作示例:

function mytheme_walk_nav_menu_items($output, $item, $depth, $args) {

    if ( $args['theme_location'] === 'primary' ) {
        $output = str_replace( 'www.domain1.com', 'www.domain2.com', $output );
    }

    return $output;
}
add_filter( 'walker_nav_menu_start_el', 'mytheme_walk_nav_menu_items', 10, 4 );
于 2013-02-18T09:51:46.463 回答