web-dev-qa-db-fra.com

Suppression de la liste déroulante des filtres dans la table des articles (Yoast SEO)

Je n’ai pas besoin de la méta-boîte Yoast SEO pour un type de message, je l’ai donc supprimée avec remove_meta_box (). Suppression des colonnes inutiles dans la table des publications en désélectionnant les colonnes avec manage_edit-custom_post_columns, mais la liste déroulante est toujours laissée. Est-il possible de l'enlever?

Bien sûr, ce n'est pas si difficile à faire avec jQuery, mais peut-être existe-t-il un filtre ou quelque chose de construit dans WP?

3
Rooo

Ces listes déroulantes supplémentaires sont ajoutées via le hook d’action restrict_manage_posts. Cela signifie que la liste déroulante n'est pas filtrable, mais vous pouvez supprimer l'action liée à Yoast SEO.

La liste déroulante des filtres est ajoutée par la méthode posts_filter_dropdown() dans la classe WPSEO_Metabox. Il est ajouté dans la méthode setup_page_analysis() de la même classe, qui est connectée à admin_init à la priorité 10.

Nous voulons donc supprimer cette action pour empêcher l'affichage du menu déroulant. Pour ce faire, nous pouvons simplement nous connecter à admin_init avec une priorité supérieure à 10 (pour nous assurer que Yoast SEO a déjà appelé add_action()). Yoast SEO stocke l'instance de classe WPSEO_Metabox dans la variable globale $wpseo_metabox, afin que nous puissions y accéder facilement:

add_action( 'admin_init', 'wpse151723_remove_yoast_seo_posts_filter', 20 );

function wpse151723_remove_yoast_seo_posts_filter() {
    global $wpseo_metabox;

    if ( $wpseo_metabox ) {
        remove_action( 'restrict_manage_posts', array( $wpseo_metabox, 'posts_filter_dropdown' ) );
    }
}
4
engelen

Réponse mise à jour pour Yoast SEO Version: 7.0.2

Cela supprimera à la fois le filtre de score de référencement et le filtre de lisibilité de la page d'édition de liste de messages dans l'administrateur WordPress.

add_action( 'admin_init', 'bb_remove_yoast_seo_admin_filters', 20 );
function bb_remove_yoast_seo_admin_filters() {
    global $wpseo_meta_columns ;
    if ( $wpseo_meta_columns  ) {
        remove_action( 'restrict_manage_posts', array( $wpseo_meta_columns , 'posts_filter_dropdown' ) );
        remove_action( 'restrict_manage_posts', array( $wpseo_meta_columns , 'posts_filter_dropdown_readability' ) );
    }
}
5
BenB

et vous pouvez ajouter cette ligne à la fonction ci-dessus pour supprimer également la liste déroulante Lisibilité:

    remove_action( 'restrict_manage_posts', array(  $wpseo_meta_columns, 'posts_filter_dropdown_readability' ) );
1
AmiNimA