私は複数の著者のウェブサイトを持っています、そして私はすべてのメンバーが彼らが発表している投稿にSEOの詳細を入力することを許可するのはあまり快適ではありません。これがウェブサイトの管理者だけに見えるようにしたいです。何か案は?
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_plugins
はactivate_plugins
に修正されるべきでした。
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メタボックスがフックされた後に行われることを確認します。
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');
Adminimizeプラグインを使用して、役割に応じてユーザーから項目を隠すことができます。これを私自身を使ってクライアントからYoast SEO関連のものを隠し、バックエンドを単純化しました。
http://wordpress.org/extend/plugins/adminimize/
非表示にしたい項目にCSSセレクターを追加して使用するのはかなり簡単です。 SEOページ分析タブを非表示にするためにそれを使用しました(#linkdex)
まあ非管理者のためのWordPress SEO設定の高度な部分を無効にするためのYoastによるWordPress SEOの設定オプションがあります。このボックスを完全に無効にしたい場合は、他のプラグインを使用して管理者以外の投稿エディタページ要素を削除できます。管理者以外の投稿エディタからWordPress SEOボックスを削除する。