Использование темы внутри каталога плагинов
Я создаю плагин для мобильных устройств и помещаю каталог тем в каталог плагинов.
Если это мобильный браузер, как я могу перенаправить на тему в каталоге плагинов?
/wp-content/plugins/mobview/theme/
Мне удалось использовать следующее перенаправление:
wp_redirect( plugins_url('/mobview/theme/index.php') );
exit ;
Но я как бы потерялся в перенаправлении каталога внутри структуры WordPress.
4 answers
Привет@Хамза:
Я думаю, что вы хотите, чтобы ваш плагин подключил 'template_include'
, чтобы он загрузил файл из каталога вашего плагина. Вот стартовый код для вашего плагина:
<?php
/*
Plugin Name: Mobile View Plugin
*/
if (is_mobile_user()) // YOU NEED TO DEFINE THIS FUNCTION
class MobileViewPlugin {
static function on_load() {
add_filter('template_include',array(__CLASS__,'template_include'));
}
function template_include($template_file) {
return dirname( __FILE__) . '/theme/index.php';
}
}
MobileViewPlugin::on_load();
}
Конечно, для этого потребуется, чтобы вы каким-то образом отфильтровали, когда это не мобильный пользователь, определив функцию is_mobile_user()
(или аналогичную) , и это также означает, что ваш /theme/index.php
должен будет обрабатывать все, включая все URL-адреса, поскольку вы в основном обошли URL-адрес по умолчанию маршрутизация, выполнив это (или вы можете проверить значения template_file
и повторно использовать логику, направив ее в эквивалентные файлы в каталоге вашего плагина.) Удачи.
P.S. Это не обеспечивает мобильное решение для администратора. Это было бы в 10 раз сложнее.
Вы неправильно понимаете механику работы темы. У него есть шаблон index.php
, но запрос все еще обрабатывается WordPress main index.php
в корне сайта. Нет смысла перенаправлять посетителя в папку темы, потому что темы не предназначены для прямого посещения (они ожидают, что для них будет загружено ядро WP и тому подобное).
Я не очень хорошо разбираюсь в таких плагинах, но я предполагаю, что они, скорее всего, используют template_redirect
крюк для загрузки своих шаблонов вместо шаблонов активной темы на соответствие мобильным браузер.
Я думаю, что в официальном репозитории есть довольно много плагинов по этой теме, вы можете просмотреть их код, чтобы получить представление об общих используемых методах.
Если я не ошибаюсь, попробуйте этот код
$includes_path = TEMPLATEPATH . '/your folder name/';
Затем напишите это
require_once ($includes_path . 'file name');
Ну,
Я думаю, я неправильно объяснил свой вопрос, поэтому я объяснил больше в комментариях:
Все, что мне нужно, это: активировать другую тему в другом каталоге и сделать такую вещь
Первый:
Зарегистрируйте новый каталог тем:
register_theme_directory( WP_PLUGIN_DIR . '/mobview/theme' )
;
2-й:
Чтобы добавить фильтр для использования этой темы:
function loading_mobv_template() {
return 'hamzamob';
}
function loading_mobv_style() {
return 'hamzamob';
}
dd_filter('stylesheet','loading_mobv_style');
add_filter('template','loading_mobv_template');
Теперь все, что мне нужно сделать, это выбрать, является ли браузер мобильным или нет, а затем активировать действие.
Спасибо ты.
Обновление: это ответ на мой первый вопрос. Спасибо:)