从POST父对象构建子对象和锚定器3

时间:2020-11-06 作者:bymem

我正在尝试从自定义帖子类型构建一个三级菜单,并希望从帖子儿童和家长构建一个完整的三级菜单,包括上下所有级别。

实际上是函数wp_list_pages()这真的很棒,实际上包括了我想要的所有级别。

但我还想稍微修改一下查询,并排除一些适合元查询的帖子,我正在使用另一个类似这样的地方:

$meta_query[] = array(
    \'relation\' => \'or\',
    array(                
        \'key\' => \'rank\',
        \'compare\' => \'<=\',
        \'type\' => \'NUMERIC\',
        \'value\' => 100,
    ),            
    array(                
        \'key\' => \'rank\',
        \'compare\' => \'NOT EXISTS\',
        \'value\' => 1,
    ),
); 
唯一的问题是wp_list_pages() 不支持meta\\u查询,只查找特定的meta键和值。

是否有人对此有解决方案,或者有想法将目标归档?

1 个回复
SO网友:bymem

因此,我通过添加一个过滤器使其工作:

我在wp\\u list\\u页面之前添加了这个

add_filter( \'get_pages\', \'check_propper_rank\', 10, 2 );
wp_list_pages( array(
   \'post_type\' => \'wiki-term\',
) );
然后创建了一个新的过滤器,以删除那些不符合排名的过滤器。

function check_propper_rank( $pages, $arguments ) {
    
    $user_rank = 100;
    
    foreach ( $pages as $key => $page ) {
        $required_rank = get_post_meta($page->ID, \'rank\', true);
        if ( $required_rank >= $user_rank ) {
            unset($pages[$key]);
        }
    }
    
    if ( empty( $pages ) )
        return $pages;

    // Remove instantly
    remove_filter( current_filter(), __FUNCTION__, 10 );

    return $pages;
}

相关推荐

无法将设置添加到“NAV_MENUS”定制器面板

我试图在自定义程序的“菜单”面板中添加一个复选框,但由于某些原因,它没有显示出来。如果我尝试将其从“nav\\u菜单”更改为“title\\u tagline”或“colors”,复选框会显示得很好。是什么阻止它显示在“菜单”面板上?// add custom options to the Customizer function nssra_customizer_options($wp_customize) { // add \"menu primary flex\" checkb