Использование темы внутри каталога плагинов


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

Если это мобильный браузер, как я могу перенаправить на тему в каталоге плагинов?

  /wp-content/plugins/mobview/theme/

Мне удалось использовать следующее перенаправление:

wp_redirect( plugins_url('/mobview/theme/index.php') );
exit ;

Но я как бы потерялся в перенаправлении каталога внутри структуры WordPress.

Author: brasofilo, 2010-12-27

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 раз сложнее.

 3
Author: MikeSchinkel, 2010-12-27 14:11:09

Вы неправильно понимаете механику работы темы. У него есть шаблон index.php, но запрос все еще обрабатывается WordPress main index.php в корне сайта. Нет смысла перенаправлять посетителя в папку темы, потому что темы не предназначены для прямого посещения (они ожидают, что для них будет загружено ядро WP и тому подобное).

Я не очень хорошо разбираюсь в таких плагинах, но я предполагаю, что они, скорее всего, используют template_redirect крюк для загрузки своих шаблонов вместо шаблонов активной темы на соответствие мобильным браузер.

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

 4
Author: Rarst, 2010-12-27 11:42:50

Если я не ошибаюсь, попробуйте этот код

$includes_path = TEMPLATEPATH . '/your folder name/';

Затем напишите это

require_once ($includes_path . 'file name');

 2
Author: Niraj Chauhan, 2010-12-27 10:55:10

Ну,

Я думаю, я неправильно объяснил свой вопрос, поэтому я объяснил больше в комментариях:

Все, что мне нужно, это: активировать другую тему в другом каталоге и сделать такую вещь

Первый:

Зарегистрируйте новый каталог тем:

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'); 

Теперь все, что мне нужно сделать, это выбрать, является ли браузер мобильным или нет, а затем активировать действие.

Спасибо ты.


Обновление: это ответ на мой первый вопрос. Спасибо:)

 0
Author: Hamza, 2010-12-27 14:08:58