web-dev-qa-db-fra.com

Comment désactiver la liste déroulante Attributs de page dans wp-admin

Comme indiqué à L'écran d'administration de WordPress est très lent/arrive à expiration lors de la modification ou de l'ajout d'une nouvelle page/d'un message personnalisé

J'ai un problème similaire sur un WP site contenant 7 784 pages. Le chargement des écrans d'édition est lent en raison du rendu de toutes les pages de 7 000 pages dans le code source du menu déroulant Attributs de page. Outre l'édition de base, il doit exister un meilleur moyen de gérer cela. On dirait une faille pour rendre toutes les pages sur l'écran d'édition.

Les commentaires des autres sites à fort volume/trafic WP sites sont très appréciés!

1
Jason Deadrich

La suppression de la prise en charge des attributs de page empêchera l'affichage de cette boîte ...

function remove_page_attribute_support() {
    remove_post_type_support('page','page-attributes');
}
add_action( 'init', 'remove_page_attribute_support' );

... mais je ne sais pas si vous avez besoin d'un support d'attributs ou non. Si vous ne le faites pas c'est la solution.

Si vous le faites, vous devrez supprimer la boîte conformément à la réponse de @ KrzysiekDrozdz, mais pour pouvoir utiliser ces attributs, vous devrez reconstruire cette boîte, l'original est ici , de sorte que cela fonctionne pour vous.

3
s_ha_dum

Utilisez simplement remove_meta_box function:

if (is_admin()) :
function my_remove_meta_boxes() {
    remove_meta_box('pageparentdiv', 'page', 'side');
}
add_action( 'admin_menu', 'my_remove_meta_boxes' );
endif;

Si vous devez définir la hiérarchie de ces pages (définissez post_parent pour les pages), vous pouvez toujours le faire. Ajoutez simplement votre méta-boîte personnalisée et placez-y une boîte de sélection avec une liste de pages.

Vous devez être sûr que votre requête (pour sélectionner ces pages) est plus efficace que l’original. Vous pouvez répertorier les pages sans hiérarchie et sélectionner uniquement title et page_id (la requête d'origine récupérera toutes les données de page à partir de la base de données. Il peut s'agir de nombreuses données, s'il y a plusieurs pages) ou quelque chose du genre.

2
Krzysiek Dróżdż

Une autre option consiste à filtrer les arguments de la liste déroulante avant d'appeler wp_dropdown_pages. Cette fonction a un crochet, mais cela arriveaprèsla requête a été faite.

Il peut être filtré à deux endroits: en mode Édition rapide et dans la boîte méta de la page. Mais aucun n'est disponible pour Options Reading ou Theme Customizer.

enter image description here

Voici les arguments par défaut et un exemple de filtre permettant de restreindre le nombre de pages par auteur (depth, child_of et exlcude semble également être un bon candidat).

/*
$defaults = array(
    'depth' => 0, 
    'show_date' => '',
    'date_format' => get_option('date_format'),
    'child_of' => 0, 
    'exclude' => '',
    'title_li' => __('Pages'), 
    'echo' => 1,
    'authors' => '', 
    'sort_column' => 'menu_order, post_title',
    'link_before' => '', 
    'link_after' => '', 
    'walker' => '',
);
*/

add_filter( 'quick_edit_dropdown_pages_args', 'limit_parents_wpse_106164' );
add_filter( 'page_attributes_dropdown_pages_args', 'limit_parents_wpse_106164' );

function limit_parents_wpse_106164( $args )
{
    $args['authors'] = 'author_name';
    return $args;
}
2
brasofilo