web-dev-qa-db-ja.com

投稿テーブルのフィルタドロップダウンを削除する(この場合はYoast SEO)

1つの投稿タイプにYoast SEOメタボックスは必要ないので、remove_meta_box()で削除しました。 manage_edit-custom_post_columnsを使用して列を設定解除して、postテーブル内の不要な列を削除しましたが、ドロップダウンはまだ残っています。それを削除する方法はありますか?

もちろん、それはjQueryとはそれほど難しいことではありませんが、WPに組み込まれているフィルターや何かはあるのでしょうか。

3
Rooo

これらの追加のドロップダウンはrestrict_manage_postsアクションフックを介して追加されます。これはドロップダウン出力がフィルタ処理できないことを意味しますが、あなたはYoast SEOからフックされたアクションを削除することができます。

フィルタドロップダウンはWPSEO_Metaboxクラスのposts_filter_dropdown()メソッドによって追加されます。優先度10でadmin_initにフックされている、同じクラスのsetup_page_analysis()メソッドに追加されています。

そのため、ドロップダウンが表示されないようにするために、そのアクションを削除します。そのためには、10を超える優先順位でadmin_initにフックするだけです(Yoast SEOが既にadd_action()を呼び出していることを確認するため)。 Yoast SEOはWPSEO_Metaboxクラスのインスタンスをグローバル変数$wpseo_metaboxに格納するので、簡単にアクセスできます。

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

Yoast SEOのバージョンに対する更新された回答:7.0.2

これはWordPress管理者の投稿リスト編集ページからseoスコアフィルタと読みやすさフィルタの両方を削除します。

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

読みやすさのドロップダウンも削除するには、上記の関数に次の行を追加します。

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