web-dev-qa-db-fra.com

Comment supprimer le modèle de menu déroulant tout en conservant Parent and Order

Je suis sur le point de confier un site Wordpress personnalisé à un client et je ne veux pas qu’ils puissent choisir/éditer des modèles, mais je dois leur permettre de trier les pages avec la commande et de choisir une page parent.

Existe-t-il un moyen de supprimer uniquement la liste déroulante Modèle de l'option Attributs de page tout en conservant les options Parent et Ordre?

1
Anthoney Carter

Lorsque vous supprimez cette boîte de l'administrateur (comme vous l'avez écrit dans le commentaire), vous devriez pouvoir ré-enregistrer cette boîte avec une fonction personnalisée (original modifié) pour rendre la boîte:

if ( post_type_supports($post_type, 'page-attributes') )
    add_meta_box('pageparentdiv', 'page' == $post_type ? __('Page Attributes') : __('Attributes'), 'my_page_attributes_meta_box', null, 'side', 'core');

function my_page_attributes_meta_box($post) {
    $post_type_object = get_post_type_object($post->post_type);
    if ( $post_type_object->hierarchical ) {
        $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><strong><?php _e('Parent') ?></strong></p>
<label class="screen-reader-text" for="parent_id"><?php _e('Parent') ?></label>
<?php echo $pages; ?>
<?php
        } // end empty pages check
    } // end hierarchical check.
    if ( 'page' == $post->post_type && 0 != count( get_page_templates() ) ) {
        $template = !empty($post->page_template) ? $post->page_template : false;
        ?>
<p><strong><?php _e('Template') ?></strong></p>
<label class="screen-reader-text" for="page_template"><?php _e('Page Template') ?></label><select name="page_template" id="page_template">
<option value='default'><?php _e('Default Template'); ?></option>
<?php page_template_dropdown($template); ?>
</select>
<?php
    } ?>
<p><strong><?php _e('Order') ?></strong></p>
<p><label class="screen-reader-text" for="menu_order"><?php _e('Order') ?></label><input name="menu_order" type="text" size="4" id="menu_order" value="<?php echo esc_attr($post->menu_order) ?>" /></p>
<p><?php if ( 'page' == $post->post_type ) _e( 'Need help? Use the Help tab in the upper right of your screen.' ); ?></p>
<?php
}

Vous pouvez modifier la fonction autant que vous le souhaitez. Le code de la fonction provient de http://core.trac.wordpress.org/browser/tags/3.5.1/wp-admin/includes/meta-boxes.php#L618

1
david.binda