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.
yoast_is_toast()
.$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 doremove_meta_box
funkcji. W każdym razie dziękuję za sugestie.$post_type
jest już zdefiniowane i gotowe do użycia przezadd_meta_boxes
funkcje haka akcji, zobacz widok Adama Browna na ten hak akcji. Wykorzystanie$post_type
w tym przypadku uniezależni kod odpost_type
ekranu edycji, co oznacza, że usuniewpseo_meta
meta-box ze wszystkich typów postów, na których się znajduje, i nie zwróci niczego, jeśliwpseo_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 .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:źródło
Możesz go usunąć za pomocą funkcji remove_meta_box .
Zwróć uwagę na 100000 w dodatkowej aktywności, to gwarantuje, że zostanie to zrobione po podłączeniu metaboksu WP SEO.
źródło
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)
źródło
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.
źródło