Yanıtlar:
Yoast SEO eklenti sitesindeki API belgelerinde ne ID
olduğunu söylemedi yoas-plugin-dir/admin/class-metabox.php
ve Yoast'ın bir kopyasını elden çıkarmadık , ancak 144 numaralı satıra göre , kayıtlı meta_box;
add_meta_box( 'wpseo_meta', ...etc ); ...
add_meta_boxes
Aynı dosyanın 32. satırındaki kancaya asılan ,
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
Tabii ki ID düzenleme sonrası ekranında meta kutusundan kendisi alabilirsiniz ... Neyse.
Aşağıdakileri yapabilirsiniz,
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');
}
}
... burada yazı türü, bu kısıtlamayı uygulamak istediğiniz yazı türü, örneğin post
bir veya daha fazla özel yazı türü!
Hile yapmalı.
güncelleme: değiştirilmiş manage_plugins
olmalıdır activate_plugins
.
$post_type
var ve action argüman parametresi bu durumda gerekli değildir ve uyarı / hata atmaz. Ayrıca $post_type
var eklerseniz, başka bir yerde yapmadığınız fonksiyon içinde yazı türünü tanımlamanız gerekir, bu yüzden kullanıcı yanlış çalışması için bunu çalıştırmak olurdu! Bu durumda, yazı tipi adını 'post'
doğrudan remove_meta_box
işleve geçirmek gibi kabul edilebilir . Yine de öneri için teşekkürler.
$post_type
zaten add_meta_boxes
eylem kanca işlevleri tarafından tanımlanmış ve kullanılmaya hazır , lütfen bu eylem kancasının Adam Brown sorce görünümüne bakın . Yararlanma $post_type
bu durumda kod bağımsız hale getirecek post_type
onu kaldıracaktır anlamına düzenleme ekranından wpseo_meta
meta kutusu tüm bu bulunur sonrası türleri ve durumda hiçbir şey dönecektir wpseo_meta
bulunamadı.
post
post_type'den kaldırmak istemektedir, bu nedenle ilk çözüm parçalı kontrole izin verecektir. Ancak, tüm yazı türleri için kaldırmak istediğiniz durumda, önceden tanımlanmış var $post_type
kullanmak tatmin edicidir. Yapacağım şey, $post_type
birisinin bunu tüm kayıtlı post_tiplere uygulamak isteyebileceği durumlar için değişkeni kullanarak ek örneğinizi içerecek şekilde cevabımı düzenlemek .
Bunu WordPress SEO eklentisine ( API Docs ) göre Yoast tarafından bir eklenti veya tema functions.php
dosyasına yapıştırmayı deneyin .
if(function_exists('wpseo_use_page_analysis') && !current_user_can('administrator')){
add_filter('wpseo_use_page_analysis', '__return_false');
}
Herhangi bir hatayı önlemek için ... Bu, bir şeyleri gizlemeye çalışmadan önce eklentiyi devre dışı bırakmanıza ve hata atmanıza izin vermeden önce işlevin var olup olmadığını kontrol eder.
Bunun init
düzgün bir şekilde çalışması için içine girmeniz gerekebilir , ki bu böyle yapılabilir:
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 işlevini kullanarak kaldırabilirsiniz .
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 dikkat edin, bu WP SEO meta kutusu kanca sonra yapılır emin olun.
Rollerine bağlı olarak öğeleri kullanıcılardan gizlemek için Yönetici eklentisini kullanabilirsiniz. Bu kendimi bazı Yoast SEO şeyler istemcilerden gizlemek ve arka ucunu basitleştirmek için kullandım.
http://wordpress.org/extend/plugins/adminimize/
Gizlemek istediğiniz öğeler için css seçicileri ekleyerek kullanımı oldukça basittir. SEO Sayfa Analizi sekmelerini gizlemek için kullandınız (#linkdex)
İyi olmayan yöneticiler için WordPress SEO ayarlarının gelişmiş bölümünü devre dışı bırakmak için Yoast tarafından WordPress SEO'da bir ayar seçeneği var. Kutuyu tamamen devre dışı bırakmak istiyorsanız, yönetici olmayanlar için yazı düzenleyici sayfa öğelerini kaldırmak için diğer eklentileri kullanabilirsiniz, örneğin WordPress SEO kutusunu yönetici olmayanlar için yazı düzenleyiciden kaldırmak.
yoast_is_toast()
.