8

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 )

3
  • Dare I ask why you want to remove it? Is there anything specifically you don't want them to be able to do? Aug 22, 2012 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, 2012 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, 2012 at 9:01

2 Answers 2

17

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 );
0
2

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;
}
1
  • 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, 2017 at 0:43

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