Як видалити певні параметри екрана та метабокси з типу додання / редагування публікації?


10

Тепер, коли ви додаєте чи редагуєте певну публікацію в межах потрібного типу публікації, є й інші параметри екрана. Хоча ці параметри екрана показують / приховують метаполе. Я хотів би мати можливість програмно отримати список усіх зареєстрованих параметрів екрана з мета-полями, щоб я знову міг перевірити, чи існує певний масив параметрів екрана, і якщо вони є, я планую їх програмно видалити.

WordPress - Параметри екрана - Додавання чи редагування публікації - Meta Boxes Клацніть тут, щоб отримати повний розмір екрана

Запитання Як я можу програмно отримати список усіх зареєстрованих параметрів екрана (метаполе) для типів публікацій, куди потрібно додати чи відредагувати певну публікацію в межах потрібного типу публікації.

Зрештою, мета полягає в тому, щоб видалити ці параметри, а не просто їх відключити. Я хочу зробити щось відповідно до того, що я досягнув для видалення непотрібних мета-панелей інформаційної панелі .

Відповіді:


13

Те, що вам потрібно, - у глобальному $wp_meta_boxesіндексі get_current_screen()->id. Видалення параметрів екрана також видалить метабокси, які ви можете зробити перед тим, як параметри екрана відображаються за допомогою 'in_admin_header'гачка.

Тож припустимо, що ви хочете позбутися опції екрана "Надіслати відклики", яку ви бачите на цьому знімку екрана:

Укажіть наступний клас у functions.phpфайл вашої теми або у плагін, який ви можете будувати, і код видалить параметр екрана "Надіслати відклики" (і пов’язаний з ним метабокс, що теж потрібно, правда?):

class Michael_Ecklunds_Admin_Customizer {
  function __construct() {
    add_action( 'in_admin_header', array( $this, 'in_admin_header' ) );
  }
  function in_admin_header() {
    global $wp_meta_boxes;
    unset( $wp_meta_boxes[get_current_screen()->id]['normal']['core']['trackbacksdiv'] );
  }
}
new Michael_Ecklunds_Admin_Customizer();

А ось як виглядає після додавання вищевказаного коду на сайт WordPress 3.4:

Використання налагоджувача Zend в PhpStorm тут є інспекцією, $wp_meta_boxes[get_current_screen()->id]щоб ви могли побачити, які значення має установка WordPress 3.4 за замовчуванням на екрані редагування публікацій (я обвів індекси масивів, на які я посилався у своєму прикладі, тобто $wp_meta_boxes[get_current_screen()->id]['normal']['core']['trackbacksdiv']:

Сподіваємось, це те, що ви шукали?


3
Просто дивовижно! Вітаємо, Еклюнд, ти не лише отримав канонічну відповідь, але й легендарну ..!
brasofilo

@brasofilo Дякую за комплімент. Мені честь.
MikeSchinkel

@MikeSchinkel Це працює над додаванням / редагуванням допису, і дякую за це, але як ви видалите мета-вікна з екрана для сторінки, на якій є wp_list_table, що містить список усіх ваших публікацій? Перегляньте знімок екрана №1.
Майкл Еклунд

@MichaelEcklund Привіт, я думаю, я не повинен відповідати на запитання, коли я занадто втомився, щоб повністю зрозуміти питання, так? Відповідь на запитання без відповіді насправді суттєво відрізняється від того, на який я відповів, тому це справді два різні питання. Як ви ставитесь до редагування цього питання, щоб задати відповіді, а потім додати ще одне запитання як запитати, чого я не зробив? Якщо ви можете це зробити і опублікувати посилання на нього тут, у коментарях, тому я знайду, що я опублікую відповідь на еквівалентні деталі і на це питання. Інакше може скластись скласти одну узгоджену відповідь для обох.
MikeSchinkel

1
@MichaelEcklund Класно, дякую. Відповів: wordpress.stackexchange.com/a/56896/89
MikeSchinkel

0

Вибачте, це трохи бічний трек, але я виявив, що він корисний, коли справа стосується видалення wp з мета-ящиків коробки, але не стільки для користувацьких або спеціальних мета-ящиків, що стосуються теми. Щоб проілюструвати трохи більше: я встановив нову тему, яка запроваджувала власну метаполею кожного разу, коли ви створюєте публікацію / сторінку, вона відображається в опціях екрана. (Я новачок у wp так) Чомусь за допомогою підходу Майка я не зміг видалити цю власну мета-скриньку, але вона працювала на все, що не є звичайним. За свою дурість я годинами б’є по стіні, досі не міг зрозуміти, тому мені довелося повернутися до цього:

if (is_admin()) :
function my_remove_meta_boxes() 
{
  if(!current_user_can('administrator')) 
  {
    remove_meta_box('theme_custom_meta_box', 'post', 'side');
  }
}
add_action( 'add_meta_boxes', 'my_remove_meta_boxes' );
endif;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.