Intereting Posts
Как я могу удалить все неприкрепленные изображения с помощью WP-CLI или другого автоматизированного процесса? Изменение определенного значения внутри сложного поля ретранслятора / гибкого содержимого (ACF) Цикл WP_Query в контуре WP_Query PHP-код на Visual Composer Plugin Как подключить два пользовательских типа сообщений с вложенными циклами почему $ wpdb-> update () вызывает ошибку БД из wp_set_password () Полные RSS-каналы для пользовательских типов сообщений Заполнить новую таблицу стилей входа в систему дублировать функции раздела комментариев и называть его чем-то другим для пользовательских типов сообщений Поиск шаблона страницы и отображение содержимого Добавить пользовательские параметры в диалог wplink Санитария необходима для вызовов WP_Query или get_posts? Как скрыть автоматически созданное настраиваемое поле, созданное при вызове update_post_meta ()? получать типы сообщений и порядок плагинов предотвращать показ пользовательских имен виджетов в Appearance> Editor

Как создать персонализированный тип сообщения, получить шаблон пользовательского сообщения в плагине

Я пишу плагин, в котором я добавляю пользовательский тип сообщения (называемый «событиями») с помощью register_post_type. Кроме того, я хочу, чтобы он использовал single-event.php вместо обычного single.php. Текущая структура папки плагина:

  • плагин-основного file.php
  • одного event.php

Я знаю, что это возможно, если я поместил его в свой каталог тем, но хочу, чтобы он был размещен внутри плагина и использовал его. Как мне это сделать? Любая пользовательская функция для этого?

function get_custom_post_type_template($single_template) { global $post; if ($post->post_type == 'events') { $single_template = dirname( __FILE__ ) . '/single-event.php'; } return $single_template; } add_filter( 'single_template', 'get_custom_post_type_template' ); 

Источник

Или вы можете использовать:

 add_filter( 'template_include', 'single_event_template', 99 ); function single_event_template( $template ) { if ( is_singular('event') ) { $new_template = locate_template( array( 'single-event.php' ) ); if ( '' != $new_template ) { return $new_template ; } } return $template; } 

Источник

Или вы можете использовать locate_template

Это то, что я всегда делал. Не уверен, что вам нужны как $ wp_query, так и $ post, но это всегда сработало для меня.

Просто поместите это в plugin-main-file.php

 /** * Add single template for events post type plugin */ function custom_template_events_post_type_plugin($single) { global $wp_query, $post; if ($post->post_type == "events"){ $template = dirname( __FILE__ ) . '/single-event.php'; if(file_exists( $template )) return $template; } return $single; } add_filter('single_template', 'custom_template_events_post_type_plugin');