Odpowiedzi:
W dokumentach API na stronie wtyczki Yoast SEO nie ID
było napisane, co to było i nie mam do dyspozycji kopii Yoast, ale zgodnie z yoas-plugin-dir/admin/class-metabox.php
linią 144 zarejestrowano meta_box;
add_meta_box( 'wpseo_meta', ...etc ); ...
Który jest zaczepiony na add_meta_boxes
haku na linii 32 tego samego pliku,
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
Oczywiście możesz pobrać identyfikator z samej skrzynki meta na ekranie edycji postów ... W każdym razie.
Możesz wykonać następujące czynności,
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');
}
}
... gdzie typ postu to typ postu, w którym chcesz zastosować to ograniczenie, np. post
niestandardowy typ postu jeden lub więcej!
Powinien załatwić sprawę.
aktualizacja: manage_plugins
powinna być activate_plugins
- poprawiona.
$post_type
parametr argumentu var i action nie jest wymagany w tym przypadku i nie powoduje powiadomienia / błędu. Również jeśli $post_type
dołączasz var, musisz zdefiniować typ postu w funkcji w innym miejscu, czego nie zrobiłeś, więc użytkownik uruchomiłby to, aby działał nieprawidłowo! W tym przypadku całkowicie dopuszczalne jest podanie nazwy typu posta, tj. 'post'
Bezpośrednio do remove_meta_box
funkcji. W każdym razie dziękuję za sugestie.
$post_type
jest już zdefiniowane i gotowe do użycia przez add_meta_boxes
funkcje haka akcji, zobacz widok Adama Browna na ten hak akcji. Wykorzystanie $post_type
w tym przypadku uniezależni kod od post_type
ekranu edycji, co oznacza, że usunie wpseo_meta
meta-box ze wszystkich typów postów, na których się znajduje, i nie zwróci niczego, jeśli wpseo_meta
nie zostanie znaleziony.
post
post_ dlatego właśnie początkowe rozwiązanie pozwoli na szczegółową kontrolę. Jednak w przypadku, gdy chcesz go usunąć dla wszystkich typów postów, użycie już zdefiniowanego var $post_type
jest zadowalające. To, co zrobię, to edytuj moją odpowiedź, aby uwzględnić dodatkowy przykład, używając $post_type
zmiennej dla sytuacji, w których ktoś może chcieć zastosować to do wszystkich zarejestrowanych typów post_typ.
Spróbuj wkleić to do wtyczki lub functions.php
pliku motywu , zgodnie z wtyczką SEO WordPress ( Dokumenty API ), autorstwa Yoast .
if(function_exists('wpseo_use_page_analysis') && !current_user_can('administrator')){
add_filter('wpseo_use_page_analysis', '__return_false');
}
Aby uniknąć błędów ... Sprawdza to, czy funkcja istnieje, przed próbą ukrycia rzeczy, umożliwiając dezaktywację wtyczki i nieprzerzucanie błędów.
Może być konieczne podłączenie się, init
aby to działało poprawnie, co można zrobić w następujący sposób:
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');
Możesz go usunąć za pomocą funkcji 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' );
}
Zwróć uwagę na 100000 w dodatkowej aktywności, to gwarantuje, że zostanie to zrobione po podłączeniu metaboksu WP SEO.
Możesz użyć wtyczki Adminimize, aby ukryć elementy przed użytkownikami w zależności od ich ról. Użyłem tego osobiście, aby ukryć niektóre elementy SEO Yoast przed klientami i uprościć zaplecze.
http://wordpress.org/extend/plugins/adminimize/
Prosty w użyciu, dodając selektory css dla elementów, które chcesz ukryć. Użyłem go do ukrycia kart analizy stron SEO (#linkdex)
Cóż, istnieje opcja ustawienia w WordPress SEO przez Yoast do wyłączania zaawansowanej części ustawień SEO WordPress dla nie-administratorów. Jeśli chcesz całkowicie wyłączyć to pole, możesz użyć innych wtyczek, aby usunąć elementy strony edytora postów dla osób niebędących administratorami, np. Usunięcie skrzynki SEO WordPress z edytora postów dla osób niebędących administratorami.
yoast_is_toast()
.