Как включить все пользовательские типы сообщений вместо только сообщений - PullRequest
0 голосов
/ 07 сентября 2010
$this->add_meta_box( 'select_post_template', __( 'Post Template', 'custom-post-templates' ), 'select_post_template', 'post', 'side', 'default' );

Чтобы плагин работал с пользовательскими типами сообщений, мне сказали изменить «сообщение» на имя пользовательского типа сообщения.Кто-нибудь знает, могу ли я заставить его работать с всеми пользовательскими типами постов (включая обычные посты), изменяя каким-либо образом эту строку?

К вашему сведению, я нашел это по адресу: http://wordpress.org/support/topic/custom-post-templates-with-custom-post-types-in-wp-30?replies=5#post-1679398

И это относится к плагину Custom Post Template: http://wordpress.org/extend/plugins/custom-post-template/

Заранее спасибо!

РЕДАКТИРОВАТЬ:

Я пробовал:

$post_types = get_post_types(array("public" => true));
foreach ($post_types as $post_type) {
  $this->add_meta_box("select_post_template", __("Post Template", "custom-post-templates"), "select_post_template", $post_type, "side", "default");
}

Но пользовательские типы сообщений все еще не получают меню выбора шаблона.Посты делают так же, как и с оригинальным кодом.Спасибо за предложение ... у кого-нибудь есть другой?

Примечание: Концептуально подход надежен.Если я создаю свой собственный массив со списком своих пользовательских типов записей, этот код добавляет к ним шаблоны.

1 Ответ

1 голос
/ 08 сентября 2010

Вы можете просмотреть все зарегистрированные типы сообщений и добавить мета-поле для каждого, хотя вам может потребоваться отфильтровать некоторые типы, поскольку вложения также являются сообщениями.

$post_types = get_post_types(array("public" => true));
foreach ($post_types as $post_type) {
  add_meta_box("select_post_template", __("Post Template", "custom-post-templates"), "select_post_template", $post_type, "side", "default");
}

Что касается конкретно плагина Custom Post Template, я думаю, что проблема в том, что ваши пользовательские типы записей регистрируются после его инициализации (так как он не использует ловушку). Таким образом, $post_types (выше) не содержит ваши типы, и для них нельзя добавить мета-блоки. Вы можете попробовать добавить этот хак (в конце custom-post-templates.php):

add_action('init', 'hack_add_meta_boxes');
function hack_add_meta_boxes() {
  global $CustomPostTemplates;
  $post_types = get_post_types(array('public' => true));
  foreach ($post_types as $post_type) {
    $CustomPostTemplates->add_meta_box( 'select_post_template', __( 'Post Template', 'custom-post-templates' ), 'select_post_template', $post_type, 'side', 'default' );
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...