Intereting Posts
Ajax сбрасывает мою глобальную переменную Автоматическое связывание слов, но только одно время API настроек WordPress не сохраняет параметры Обнаружение, когда пользовательская таксономия была изменена и отобразится предупреждение? пытаясь показать отдельную запись, но отображает все сообщения в настраиваемом типе сообщений Как показать базу изображений по категории Как проверить одно числовое значение на массив значений meta_key? Различные поля на странице «Мой профиль» в зависимости от роли пользователя Получать контент из другой таблицы базы данных на основе идентификатора и переписывать URL-адрес Индивидуальный стиль дата месяц год Следующий и / или предыдущий пост-контент Попытка изменить отображаемое изображение с 180×180 до полной ширины на главной странице Как применить функцию wordpress к чему-то без идентификатора внутри страницы архива? WordPress для заполнения поля ввода пароля значением Вставлять данные через скрипт непосредственно в db

Как добавить мета-ящики в «неизвестные» пользовательские сообщения?

Я запускаю многостраничный WP, и я создал плагин, который добавляет мета-поля на мою страницу и публикует.

add_meta_box( 'Intro', __('Intro'), 'sewp_post_intro_meta_box', 'post', 'normal', 'high' ); add_meta_box( 'Intro', __('Intro'), 'sewp_post_intro_meta_box', 'page', 'normal', 'high' ); 

Проблема в том, что это не добавлено для моих настраиваемых типов сообщений. Добавление другого add_meta_box в мой плагин не является вариантом, так как это будет иметь значение только для этого клиента.

Есть ли способ обойти это?

Я не уверен, что вы подразумеваете под «неизвестными пользовательскими сообщениями», но вот как вы добавляете мета-поле для нескольких типов сообщений:

 $post_types = array( 'post', 'page', 'my_custom_post_type', ); foreach ($post_types as $post_type) add_meta_box('Intro', __('Intro'), 'my_meta_box', $post_type, 'normal', 'high'); 

Если вы хотите иметь разные контексты и / или приоритеты, вам нужно сделать это несколькими вызовами.

Если я вас неправильно понял, пожалуйста, просветите меня.

// Редактировать
Конечно, вы могли бы сделать это наоборот , и исключить типы сообщений, которые вы не хотите иметь этот мета-ящик.

 $args = array( 'public' => true, ); if (! is_array($post_types = get_post_types($args))) $post_types = array(); unset($post_types['post']); unset($post_types['attachment']); unset($post_types['my_custom_post_type']); if (count($post_types)) foreach ($post_types as $post_type) add_meta_box('Intro', __('Intro'), 'my_meta_box', $post_type, 'normal', 'high'); не $args = array( 'public' => true, ); if (! is_array($post_types = get_post_types($args))) $post_types = array(); unset($post_types['post']); unset($post_types['attachment']); unset($post_types['my_custom_post_type']); if (count($post_types)) foreach ($post_types as $post_type) add_meta_box('Intro', __('Intro'), 'my_meta_box', $post_type, 'normal', 'high'); не $args = array( 'public' => true, ); if (! is_array($post_types = get_post_types($args))) $post_types = array(); unset($post_types['post']); unset($post_types['attachment']); unset($post_types['my_custom_post_type']); if (count($post_types)) foreach ($post_types as $post_type) add_meta_box('Intro', __('Intro'), 'my_meta_box', $post_type, 'normal', 'high'); не $args = array( 'public' => true, ); if (! is_array($post_types = get_post_types($args))) $post_types = array(); unset($post_types['post']); unset($post_types['attachment']); unset($post_types['my_custom_post_type']); if (count($post_types)) foreach ($post_types as $post_type) add_meta_box('Intro', __('Intro'), 'my_meta_box', $post_type, 'normal', 'high'); 

Если это не то, что вы ищите, я боюсь, что понятия не имею, что вы будете удовлетворены.

Вы не хотите указывать типы сообщений, но хотите, чтобы некоторые функции привязывались к определенным типам сообщений …

Вы можете попробовать NULL или пустую строку в качестве входного значения $screen :

 add_meta_box( 'Intro', __('Intro'), 'sewp_post_intro_meta_box', $screen = '', 'normal', 'high' ); 

для добавления мета-поля в любой «экранный» тип сообщения, потому что тогда по умолчанию :

  if ( empty( $screen ) ) $screen = get_current_screen(); 

ps: Если вам нужны определенные типы сообщений или лучший контроль, вы должны использовать то, что предложили @tf.