我当前正在尝试更改wp\\U list\\U pages正在输出的输出类。然而,我不希望进行全局更改,因此简单的过滤器不是一个选项,即只有由快捷码生成的菜单应该有不同的类。
目前,我正在制作标题中这样的菜单。php:
<nav class="uk-navbar uk-navbar-attached" data-uk-sticky>
<ul class="uk-navbar-nav uk-width-1-1">
<?php do_shortcode(\'[top_main_menu]\');?>
</ul>
</nav>
在函数中。php我有以下内容,注意到我已经尝试了两种方法,但都不起作用(显然我没有同时做这两种方法)
/* Call using: [top_main_menu] */
add_shortcode( \'top_main_menu\', \'echo_top_main_menu\' );
function echo_top_main_menu() {
//Doesn\'t work
echo str_replace("page_item", "uk-hidden-small", wp_list_pages(\'echo=false&exclude=134,115,104&sort_column=menu_order&title_li=\'));
//Doesn\'t work
echo preg_replace(\'/li class\\=\\"/\', \'li class="uk-hidden-small \', wp_list_pages(\'echo=false&exclude=134,115,104&sort_column=menu_order&title_li=\'));
}
编辑:试用过滤器。更新类,但影响所有wp\\U list\\U pages实例,而不仅仅是短代码中的实例。
/* Call using: [top_main_menu] */
add_shortcode( \'top_main_menu\', \'echo_top_main_menu\' );
function echo_top_main_menu() {
add_filter(\'wp_list_pages\', create_function(\'$t\', \'return str_replace("<li class=\\"page_item", "<li class=\\"uk-hidden-small ", $t);\'));
$output = wp_list_pages(\'echo=false&exclude=134,115,104&sort_column=menu_order&title_li=\');
remove_filter(\'wp_list_pages\', create_function(\'$t\', \'return str_replace("<li class=\\"page_item", "<li class=\\"uk-hidden-small ", $t);\'));
echo $output;
}
目前,无论发生什么情况,它都会在菜单上输出以下内容:
<li class="page_item page-item-78"><a href="https://www.example.com/some-page/">Some Page</a></li>
但是,我要求:
<li class="uk-hidden-small page-item-78"><a href="https://www.example.com/some-page/">Some Page</a></li>
我知道Walker是一个选项,但从wp\\U list\\u页面返回的字符串应该可以通过字符串替换或类似方式进行编辑?