Відповіді:
У документах API на веб-сайті плагіну Yoast SEO не було сказано, що це ID
було, і в мене немає при собі копії Yoast, але відповідно до yoas-plugin-dir/admin/class-metabox.php
рядка 144 зареєстрований meta_box є;
add_meta_box( 'wpseo_meta', ...etc ); ...
Який зачеплений на add_meta_boxes
гачок у рядку 32 того ж файлу,
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
Звичайно, ви можете отримати ідентифікатор з мета-поля на екрані редагування публікацій ... У будь-якому випадку.
Ви можете зробити наступне,
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
- доповнено.
$post_type
параметр аргументу var та action в цьому випадку не потрібен і не видає повідомлення / помилку. Також якщо ви включаєте $post_type
var, вам потрібно визначити тип публікації у межах функції, де ви цього не робили, тож користувач запустив би це, щоб він працював неправильно! У цьому випадку цілком прийнятно передавати ім'я типу посту, тобто як 'post'
безпосередньо у remove_meta_box
функцію. Дякую за пропозицію в будь-якому випадку.
$post_type
він уже визначений і готовий до використання add_meta_boxes
функцій гачка дій, будь ласка, перегляньте опис цього гачка дій Адама Брауна . Використовуючи $post_type
в цьому випадку, код зробить незалежним від post_type
екрана редагування, тобто він видалить wpseo_meta
метабокс із усіх типів публікацій, на яких він знайдений, і не поверне нічого, якщо wpseo_meta
його не знайдено.
post
post_type", тому початкове рішення дозволить детально контролювати. Однак у випадку, коли ви хочете видалити його для всіх типів публікацій, тоді використання вже визначеного var $post_type
є задовільним. Що я зроблю, - це відредагувати свою відповідь, щоб включити ваш додатковий приклад із використанням $post_type
змінної для ситуацій, коли хтось може захотіти застосувати це до всіх зареєстрованих типів пост_типів.
Спробуйте вставити це у плагін або functions.php
файл теми , відповідно до плагіна WordPress SEO ( API Docs ), Yoast .
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');
Ви можете видалити його за допомогою функції 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' );
}
Зверніть увагу на 100000 в додатку завантаження, це гарантує, що це робиться після підключення метабокса WP SEO.
Ви можете використовувати плагін Adminimize, щоб приховати елементи від користувачів залежно від їх ролі. Я використовував це сам, щоб приховати від клієнтів деякі речі Yoast SEO та спростити задню частину.
http://wordpress.org/extend/plugins/adminimize/
Досить прямо вперед для використання, додавши селектори css для елементів, які ви хочете приховати. Використовували його для приховування вкладок аналізу сторінки SEO (#linkdex)
Ну, є параметр налаштування на WordPress SEO від Yoast для відключення розширеної частини налаштувань WordPress SEO для не адміністраторів. Якщо ви хочете повністю вимкнути це поле, ви можете використовувати інші плагіни, щоб видалити елементи сторінки редактора публікацій для не адміністраторів, наприклад, видалити поле WordPress SEO з редактора пошти для не адміністраторів.
yoast_is_toast()
.