Wordpress - Removing filter dropdown in posts table (in this case Yoast SEO)
Updated answer for Yoast SEO Version: 7.0.2
This will remove both seo score filter and readability filter from posts list edit page in WordPress admin.
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' ) );
}
}
Update 18/03/2020 version 13.3
2 options currently work with current latest version 13.3
Option 1:
If you are working on a headless CMS or fetch the data via custom endpoints and don't need the CPT to be "public"
You can set post_type $args value "public" => false
and SEO meta fields and columns filters fields won't appear.
Option 2:
Use the filter wpseo_accessible_post_types
function bb_disable_yoast_seo_metabox( $post_types ) {
unset( $post_types['custom_post_type'] );
return $post_types;
}
add_filter( 'wpseo_accessible_post_types', 'bb_disable_yoast_seo_metabox' );
These additional dropdowns are added via the restrict_manage_posts
action hook. This means the dropdown output isn't filterable, but you can remove the hooked action from Yoast SEO.
The filter dropdown is added by the posts_filter_dropdown()
method in the WPSEO_Metabox
class. It's added in the setup_page_analysis()
method of the same class, which is hooked into admin_init
at priority 10.
So, we want to remove that action to prevent the dropdown from being displayed. To do so, we can simply hook into admin_init
at a priority greater than 10 (to ensure Yoast SEO has already called add_action()
). Yoast SEO stores the WPSEO_Metabox class instance in the global variable $wpseo_metabox
, so we can easily access it:
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' ) );
}
}