Я хотел бы предложить свой тип поста в качестве плагина, чтобы люди могли использовать его, не касаясь папки своей темы. Но пользовательские шаблоны типов записей, такие как single-movies.php, находятся в папке темы. Есть ли способ заставить WP проверять наличие одного файла movies.php в папке плагина? Зацепить функцию в иерархии файлов ? Или get_template_directory (); ?
plugins
custom-post-types
themes
directory
nathanbweb
источник
источник
get_query_template()
функцией. Это переменная ловушка, поэтому первая часть{$type}_template
изменяется в зависимости от того, какой параметр передан этой функции. Смотрите wp-includes / template.php для некоторых распространенныхadd_filter( 'single-movies_template', 'my_custom_template' );
как в связанном руководстве. (Этот вопрос закрыт для новых ответов, поэтому я не могу добавить его самостоятельно.)PLUGIN_PATH
на,plugin_dir_path( __FILE__ )
а затем удалить первую косую черту из вашего имени файла. Полный путь будет выглядеть примерно так:return plugin_dir_path( __FILE__ ) . 'Custom_File.php';
Обновленный ответ
Более чистая и короткая версия.
Старый ответ
В ответ @Brainternet добавлена проверка для определенного шаблона типа сообщения в папке темы.
Теперь вы можете позволить пользователям плагина скопировать шаблон из вашего плагина в свою тему, чтобы переопределить его.
В этом примере шаблоны должны находиться в корневом каталоге плагина и темы.
источник
locate_template
вместоget_stylesheet_directory
звучит как более чистый вариант для меня (находится здесь: code.tutsplus.com/tutorials/… ).Я хотел бы отметить, что когда вы используете для этого метод фильтра, чрезвычайно важно расставить приоритеты фильтра следующим образом:
Если вы этого не сделаете, иногда WP будет пытаться перепроверить после этого фильтра. Вытаскивал мои волосы из-за этого около 2 часов.
источник
Есть гораздо лучший способ сделать это, что я использую для своих плагинов.
Используйте
template_include
фильтр-крюк для загрузки вышеуказанного кода.источник
Благодаря этой странице я смог решить тот же вопрос для меня.
Для справки, это то, что я закончил с:
ловушка фильтра {$ type} _template у меня не сработала
источник
Выше приведен отличный ответ, но проверка на $ single var позволяет шаблону переопределять шаблон, если он предоставляется темой / дочерней темой.
источник