Yoasts SEO plugin adds a metabox to the post edit screen. I'm trying to remove this for users who aren't editors or above.

I've tried putting a remove_meta_box call in on admin_init, trying to remove the action on $wpseo_metabox but to no avail.

How do I remove this metabox without requiring user intervention (the user should never know the metabox existed, so clicking on screen options is not an option )

  • Dare I ask why you want to remove it? Is there anything specifically you don't want them to be able to do? – Joost de Valk Aug 22 '12 at 7:29
  • 2
    Because there's a class of user who has no idea what SEO is, things need to be simplified for them ( more to the point the client with the cash requested it ). Someone with editor level privs will be moderating and approving the post anyway so it's better if they do the SEO part rather than the bottom level users writing the initial content. – Tom J Nowell Aug 22 '12 at 8:59
  • And this should really be a comment not an answer, wouldn't want other people to downvote you – Tom J Nowell Aug 22 '12 at 9:01

On remove_meta_box is a note:

Because you can't remove a meta box until it's been added, it's important to make sure your call to remove_meta_box() happens in the right sequence.

WordPress SEO adds meta boxes on add_meta_boxes action with default priority - 10, which run after admin_init, so that won't remove them. Instead you need to hook into add_meta_boxes, but with lower priority - 11, 12, etc.

function mamaduka_remove_metabox() {
    if ( ! current_user_can( 'edit_others_posts' ) )
        remove_meta_box( 'wpseo_meta', 'post', 'normal' );
add_action( 'add_meta_boxes', 'mamaduka_remove_metabox', 11 );
| improve this answer | |

Remove metaboxes for non-admin accounts:

add_filter ( 'manage_edit-post_columns', 'rkv_remove_columns' );
function rkv_remove_columns( $columns ) {

   if ( ! current_user_can('administrator') ) { 

    unset( $columns['wpseo-score'] );
    unset( $columns['wpseo-title'] );
    unset( $columns['wpseo-metadesc'] );
    unset( $columns['wpseo-focuskw'] );
    return $columns;
| improve this answer | |
  • Doesn't work on events from an event calendar plugin - this did work however for regular posts. I am not sure if this works on custom post types. – Radmation Jan 26 '17 at 0:43

Not the answer you're looking for? Browse other questions tagged or ask your own question.