如何限制在页面属性菜单上选择父页面时显示的页面?

时间:2018-05-29 作者:nagato saitou

我有一个有很多页面的网站。我想知道是否有一种方法可以只显示我想在菜单上显示的页面来选择父页面。

其中很多都是子页面,我不需要它们出现在父页面的菜单中。

有人知道怎么做吗?

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

此元框打印有page_attributes_meta_box 并使用以下代码生成用于选择父项的选择字段:

if ( is_post_type_hierarchical( $post->post_type ) ) :
    $dropdown_args = array(
        \'post_type\'        => $post->post_type,
        \'exclude_tree\'     => $post->ID,
        \'selected\'         => $post->post_parent,
        \'name\'             => \'parent_id\',
        \'show_option_none\' => __(\'(no parent)\'),
        \'sort_column\'      => \'menu_order, post_title\',
        \'echo\'             => 0,
    );

    $dropdown_args = apply_filters( \'page_attributes_dropdown_pages_args\', $dropdown_args, $post );
    $pages = wp_dropdown_pages( $dropdown_args );
    if ( ! empty($pages) ) :
?>
<p class="post-attributes-label-wrapper"><label class="post-attributes-label" for="parent_id"><?php _e( \'Parent\' ); ?></label></p>
<?php echo $pages; ?>
正如您所看到的功能wp_dropdown_pages 在那里使用,您可以使用page_attributes_dropdown_pages_args 筛选以修改其调用的参数。

因此,假设您只需要顶级页面:

function wpse_modify_parent_dropdown_args($args, $post) {
    $args[\'depth\'] = 1;
    return $args;
}
add_filter( \'page_attributes_dropdown_pages_args\', \'wpse_modify_parent_dropdown_args\', 10, 2 );

结束

相关推荐

前端AJAX的问题,在访问wp-admin/admin-ajax.php时获得302重定向

我想对前端登录用户使用wp-ajax,但显示发现的302错误并调用主页。它对于管理员用户和未登录用户都可以正常工作。以下是网络日志截图:我使用了以下两种ajax功能:add_action(\'wp_ajax_add_sale\', \'add_sale\'); add_action(\'wp_ajax_nopriv_add_sale\', \'add_sale\'); add_sale() 以下内容:<?php function add_sale() { di