回答:
Yoast SEOプラグインサイトのAPIドキュメントには何が記載ID
されているのか、私はYoastのコピーを自由にインストールできませんが、yoas-plugin-dir/admin/class-metabox.php
144行目によると、meta_boxは登録されています。
add_meta_box( 'wpseo_meta', ...etc ); ...
add_meta_boxes
同じファイルの32行目のフックにフックされていますが、
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_plugins
べきactivate_plugins
でした-賞賛されました。
$post_type
varおよびaction引数パラメーターはこのインスタンスでは必要なく、通知/エラーをスローしません。また、$post_type
var を含める場合は、他の場所で行わなかった関数内で投稿タイプを定義する必要があるため、ユーザーがこれを実行すると、正しく機能しなくなります。この場合、投稿タイプ名を'post'
直接remove_meta_box
関数として渡すことは完全に許容されます。とにかく提案をありがとう。
$post_type
すでに定義されており、add_meta_boxes
アクションフック関数で使用する準備ができています。このアクションフックのAdam Brownソースビューを参照してください。利用$post_type
このケースでは、のコードを独立させるだろうpost_type
、それは削除されますを意味し、編集画面をwpseo_meta
からメタボックスをすべてそれが発見されたポストの種類、およびケースで何も返さないだろうwpseo_meta
が見つかりません。
post
post_type からメタボックスを削除する必要があるため、最初のソリューションでは詳細な制御が可能です。ただし、すべての投稿タイプから削除する場合は、すでに定義されている変数を使用するだけ$post_type
で十分です。私がすることは、私の回答を編集して$post_type
、誰かがすべての登録済みpost_typesにこれを適用したい状況で変数を使用する追加の例を含めることです。
YoastによるWordPress SEOプラグイン(API Docs)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');
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メタボックスがフックされた後にこれが確実に実行されます。
Adminimizeプラグインを使用して、役割に応じてユーザーからアイテムを非表示にすることができます。これを使用して、Yoast SEO機能をクライアントから隠し、バックエンドを簡素化しました。
http://wordpress.org/extend/plugins/adminimize/
非表示にするアイテムのcssセレクターを追加することで、非常に簡単に使用できます。これを使用してSEOページ分析タブを非表示にしました(#linkdex)
yoast_is_toast()
。