Jawaban:
Itu tidak mengatakan dalam dokumen API di situs plugin Yoast SEO apa yang ID
dulu dan saya tidak punya salinan Yoast diinstal pada pembuangan, tetapi menurut yoas-plugin-dir/admin/class-metabox.php
baris 144, meta_box terdaftar adalah;
add_meta_box( 'wpseo_meta', ...etc ); ...
Yang terhubung ke add_meta_boxes
kait pada baris 32 dari file yang sama,
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
Tentu saja Anda bisa mendapatkan ID dari kotak meta itu sendiri di layar edit posting ... Pokoknya.
Anda dapat melakukan hal berikut,
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');
}
}
... di mana jenis kiriman adalah jenis kiriman yang ingin Anda terapkan juga pembatasan ini, seperti post
atau jenis kiriman khusus satu atau lebih!
Sebaiknya lakukan triknya.
pembaruan: manage_plugins
seharusnya activate_plugins
- diubah.
$post_type
parameter argumen aksi dan var tidak diperlukan dalam hal ini dan tidak membuang pemberitahuan / kesalahan. Juga jika Anda memasukkan $post_type
var, Anda perlu mendefinisikan jenis posting di dalam fungsi di tempat lain yang tidak Anda lakukan, jadi pengguna akan menjalankan ini agar berfungsi dengan tidak benar! Dalam hal ini dapat diterima untuk 'post'
memasukkan nama jenis posting yaitu langsung ke remove_meta_box
fungsi. Terima kasih atas sarannya.
$post_type
sudah ditentukan dan siap digunakan oleh add_meta_boxes
fungsi hook tindakan, silakan lihat Adam Brown sorce view hook tindakan ini. Memanfaatkan $post_type
dalam hal ini akan membuat kode independen dari post_type
layar pengeditan, yang berarti akan menghapus wpseo_meta
kotak meta dari semua jenis posting yang ditemukan, dan tidak akan mengembalikan apa pun jika wpseo_meta
tidak ditemukan.
post
post_type yang merupakan alasan mengapa solusi awal memungkinkan kontrol granular. Namun dalam kasus di mana Anda ingin menghapusnya untuk semua jenis posting maka menggunakan var yang sudah ditentukan $post_type
memuaskan. Apa yang akan saya lakukan adalah mengedit jawaban saya untuk memasukkan contoh tambahan Anda menggunakan $post_type
variabel untuk situasi di mana seseorang mungkin ingin menerapkan ini ke semua post_types terdaftar.
Coba tempel ini dalam file plugin atau tema functions.php
, sesuai dengan plugin WordPress SEO ( API Documents ), oleh Yoast .
if(function_exists('wpseo_use_page_analysis') && !current_user_can('administrator')){
add_filter('wpseo_use_page_analysis', '__return_false');
}
Untuk menghindari kesalahan ... Ini memeriksa untuk memastikan fungsi tersebut ada, sebelum mencoba menyembunyikan hal-hal, memungkinkan Anda untuk menonaktifkan plugin, dan tidak melempar kesalahan.
Anda mungkin perlu mengaitkannya init
agar ini berfungsi dengan benar, yang bisa dilakukan seperti ini:
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');
Anda dapat menghapusnya menggunakan fungsi 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' );
}
Perhatikan 100000 di add_action, ini memastikan bahwa ini dilakukan setelah metabox WP SEO telah terhubung.
Anda dapat menggunakan plugin Adminimize untuk menyembunyikan item dari pengguna tergantung pada peran mereka. Telah menggunakan ini sendiri untuk menyembunyikan beberapa hal SEO Yoast dari klien dan menyederhanakan bagian belakang.
http://wordpress.org/extend/plugins/adminimize/
Cukup mudah digunakan dengan menambahkan pemilih css untuk item yang ingin Anda sembunyikan. Telah menggunakannya untuk menyembunyikan tab Analisis Halaman SEO (#linkdex)
Yah ada opsi pengaturan pada WordPress SEO oleh Yoast untuk menonaktifkan bagian lanjutan dari pengaturan SEO WordPress untuk non admin. Jika Anda ingin menonaktifkan kotak sepenuhnya maka Anda dapat menggunakan plugin lain untuk menghapus elemen halaman editor posting untuk non admin, misalnya menghapus kotak WordPress SEO dari editor posting untuk non admin.
yoast_is_toast()
.