J'ai un site avec beaucoup de pages. J'aimerais savoir s'il existe une méthode permettant d'afficher uniquement les pages que je souhaite afficher dans le menu pour choisir la page parent.
Beaucoup d'entre elles sont des pages enfants et je n'ai pas besoin qu'elles soient dans le menu de la page parent.
Est-ce que quelqu'un sait comment le faire?
Cette méta-boîte est imprimée avec page_attributes_meta_box
et le champ de sélection pour choisir le parent est généré avec ce code:
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; ?>
Comme vous pouvez le voir, la fonction wp_dropdown_pages
est utilisée ici et vous pouvez utiliser le filtre page_attributes_dropdown_pages_args
pour modifier les arguments de son appel.
Alors disons que vous ne voulez que des pages de premier niveau:
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 );