WP_LIST_PAGES-使用Walker定制输出顺序

时间:2013-02-12 作者:Jonathan Wold

我正在使用wp\\u list\\u页面创建导航菜单。不过,我在菜单顺序方面遇到了一个挑战,我正试图找到一种方法来更好地控制菜单的顺序。

是否可以使用Walker自定义wp\\U list\\u页面输出的顺序?

例如,我想检查wp\\u list\\u pages results中的给定页面是否有post_meta 的值page_x 然后对另一个页面执行相同的操作,如果没有规则匹配,则继续正常操作。

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

wp_list_pages( $args ) 呼叫get_pages( $args ). 您可以筛选get_pages() 过滤器打开时的输出get_pages.

假设你打电话wp_list_pages() 像这样:

wp_list_pages(
    array(
        \'please_filter_me\' => TRUE
    )
);
现在可以使用以下代码对页面进行排序(未测试):

add_filter( \'get_pages\', function( $pages, $args ) {
    // not our query
    if ( empty ( $args[\'please_filter_me\'] ) )
        return $pages;

    $out = $top = array();

    foreach ( $pages as $page )
    {
        if ( get_post_meta( $page->ID, \'my_key\', TRUE ) )
            $top[] = $page;
        else
            $out[] = $page;
    }

    return $top + $out;
}, 10, 2 );

结束

相关推荐