Please disable your adblock and script blockers to view this page
Monday, September 28
Home>>PHP>>Disable Yoast WordPress SEO for certain roles
Disable Yoast WordPress SEO for certain roles
PHP

Disable Yoast WordPress SEO for certain roles

// Returns true if user has specific role 
function check_user_role( $role, $user_id = null ) {
    if ( is_numeric( $user_id ) )
        $user = get_userdata( $user_id );
    else
        $user = wp_get_current_user();
    if ( empty( $user ) )
        return false;
    return in_array( $role, (array) $user->roles );
}
 
// Disable WordPress SEO meta box for all roles other than administrator and seo
function wpse_init(){
    if( !(check_user_role('seo') || check_user_role('administrator')) ){
        // Remove page analysis columns from post lists, also SEO status on post editor
        add_filter('wpseo_use_page_analysis', '__return_false');
        // Remove Yoast meta boxes
        add_action('add_meta_boxes', 'disable_seo_metabox', 100000);
    }   
}
add_action('init', 'wpse_init');
 
function disable_seo_metabox(){
    remove_meta_box('wpseo_meta', 'post', 'normal');
    remove_meta_box('wpseo_meta', 'page', 'normal');
}

The Yoast WordPress SEO plugin offers great control of your WordPress site’s SEO. Unfortunately, the plugin doesn’t define specific capabilities, which suggests you can’t restrict access to the WordPress SEO settings to specific roles. In a multi-user site set up, you may not want your editors or contributors to have access to these settings if they don’t know what they’re doing.

This workaround disables the WordPress SEO meta box and therefore the page analysis columns for all roles aside from ‘administer

Leave a Reply

Your email address will not be published. Required fields are marked *

Translate »