web-dev-qa-db-ja.com

YoastによるWordPress SEO:管理者以外の投稿にメタボックスを隠す

私は複数の著者のウェブサイトを持っています、そして私はすべてのメンバーが彼らが発表している投稿にSEOの詳細を入力することを許可するのはあまり快適ではありません。これがウェブサイトの管理者だけに見えるようにしたいです。何か案は?

9
Audrius

Yoast SEOプラグインサイトのAPIドキュメントでIDが何であるかを述べておらず、Yoastのコピーが自由にインストールされていませんが、yoas-plugin-dir/admin/class-metabox.php行144によれば、meta_boxは登録されています。

add_meta_box( 'wpseo_meta', ...etc ); ...

同じファイルの行32のadd_meta_boxesフックにフックされます。

add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );

もちろん、投稿編集画面のメタボックス自体からIDを取得できます...とにかく。

次のことができます。

add_action('add_meta_boxes', 'yoast_is_toast', 99);
function yoast_is_toast(){
    //capability of 'manage_plugins' equals admin, therefore if NOT administrator
    //hide the meta box from all other roles on the following 'post_type' 
    //such as post, page, custom_post_type, etc
    if (!current_user_can('activate_plugins')) {
        remove_meta_box('wpseo_meta', 'post_type', 'normal');
    }
}

...ここで、投稿タイプは、postやカスタム投稿タイプなど、この制限を適用したい投稿タイプです。

トリックを行う必要があります。

更新:manage_pluginsactivate_pluginsに修正されるべきでした。

19
Adam

remove_meta_box 関数を使って削除できます。

if ( ! current_user_can( 'edit_pages' ) ) {
    add_action( 'add_meta_boxes', 'my_remove_wp_seo_meta_box', 100000 );
}

function my_remove_wp_seo_meta_box() {
    remove_meta_box( 'wpseo_meta', 'post', 'normal' );
}

Add_actionの100000に注目してください。これはWP SEOメタボックスがフックされた後に行われることを確認します。

4
Kid Slimmer

WordPress SEOプラグインAPI Docs )に従って Yoast のように、これをプラグインまたはテーマのfunctions.phpファイルに貼り付けてみてください。

if(function_exists('wpseo_use_page_analysis') && !current_user_can('administrator')){
    add_filter('wpseo_use_page_analysis', '__return_false');
}

エラーを避けるために...これは、何かを隠そうとする前に、関数が存在することを確認し、プラグインを無効にし、エラーをスローしないようにします。

これが正しく動作するためにはinitにフックする必要があるかもしれません。

function wpse_init(){
    if(function_exists('wpseo_use_page_analysis') && !current_user_can('administrator')){
        add_filter('wpseo_use_page_analysis', '__return_false');
    }   
}
add_action('init', 'wpse_init');
4
Michael Ecklund

Adminimizeプラグインを使用して、役割に応じてユーザーから項目を隠すことができます。これを私自身を使ってクライアントからYoast SEO関連のものを隠し、バックエンドを単純化しました。

http://wordpress.org/extend/plugins/adminimize/

非表示にしたい項目にCSSセレクターを追加して使用するのはかなり簡単です。 SEOページ分析タブを非表示にするためにそれを使用しました(#linkdex)

2
noelmcg

まあ非管理者のためのWordPress SEO設定の高度な部分を無効にするためのYoastによるWordPress SEOの設定オプションがあります。このボックスを完全に無効にしたい場合は、他のプラグインを使用して管理者以外の投稿エディタページ要素を削除できます。管理者以外の投稿エディタからWordPress SEOボックスを削除する。

0
user36226