2012-06-21 1 views
0

Я пишу плагин wordpress и хочу добавить meta_box для всех типов сообщений ('page', 'post', 'custom_post_type'). Ссылаясь на wordpress add_meta_box() Я нашел, что он принимает только один тип сообщения. Кто-нибудь знает, как делать то, что я хочу? Благодарю.Добавить wordpress meta box для всех типов сообщений

ответ

1
foreach (array('post', 'page', 'custom_whatever', 'whatever2') as $page) 
    add_meta_box('id', 'whatever', $callback, $page, $context, $priority, $callback_args); 

Обратите внимание, что теперь $ page становится массивом, и через него вы можете использовать все типы сообщений.

Обновление Я

Вы можете получить все зарегистрированные типы почтовых с get_post_types и использовать его для заполнения выше массива.

(примечание: вам может понадобиться, чтобы отфильтровать и получить вложения из массива ..)

+0

Благодаря Obmerk. Но я хочу более абстрактную, где я не могу определить, какие пользовательские типы сообщений, и работает для всех типов сообщений. – Gihan

+1

ну, а затем используйте 'get_posts_types' для заполнения массива. –

0

Вот полный рабочий код.

<?php 

    function my_meta_box() { 

     $my_post_types = get_post_types(); 

     foreach ($my_post_types as $my_post_type) { 
      add_meta_box( 
       'Meta_box_ID', __('Title of the meta box', 'textdomain'), 'callback_function', $my_post_type 
      ); 
     } 
    } 

    function callback_function(){ 

     // Your metabox code goes here :) 

     } 

    add_action('add_meta_boxes', 'my_meta_box'); 

?> 

Ссылка: https://developer.wordpress.org/reference/functions/add_meta_box/

Смежные вопросы