私はたくさんのページがあるサイトを持っています。親ページを選択するためにメニューに表示したいページだけを表示する方法があるかどうかを知りたいのですが。
それらの多くは子ページなので、親ページのメニューに含める必要はありません。
誰もがそれを行う方法を知っていますか?
このメタボックスは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
filterを使用できます。
そこで、トップレベルのページだけをそこに入れたいとしましょう。
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 );