Renaming wp_list_pages class

时间:2017-05-19 作者:Colin

我当前正在尝试更改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页面返回的字符串应该可以通过字符串替换或类似方式进行编辑?

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

Working solution:

/* Call using: [top_main_menu] */
add_shortcode( \'top_main_menu\', \'echo_top_main_menu\' );
function echo_top_main_menu() {

    $lookfor = array(\'page_item\');
    $replacewith = array(\'uk-hidden-small\');

    $args = array(
    \'exclude\' => \'134,115,104\',
    \'echo\'          => 0,
    \'sort_column\'   => \'menu_order\',
    \'title_li\'      => __(\'\')
    );

    $output = wp_list_pages( $args ); 

    echo str_replace($lookfor,$replacewith,$output);
}
结束

相关推荐