在插件目录中使用主题

时间:2010-12-27 作者:Hamza

我正在构建一个移动友好插件,并将主题目录放在插件目录中。

如果是移动浏览器,如何重定向到插件目录中的主题?

  /wp-content/plugins/mobview/theme/
我已成功使用以下重定向:

wp_redirect( plugins_url(\'/mobview/theme/index.php\') );
exit ;
但我在WordPress结构内的目录重定向中丢失了一些信息。

4 个回复
最合适的回答,由SO网友:MikeSchinkel 整理而成

你好@Hamza:

我认为你要做的是让你的插件挂钩\'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、 这并没有为管理员提供移动解决方案。这将是10倍以上的参与。

SO网友:Rarst

你误解了主题的运作机制。它确实有index.php 模板,但请求仍由WordPress main处理index.php 在站点的根目录中。将访问者重定向到主题的文件夹是没有意义的,因为主题并不意味着要直接访问(他们希望为他们加载WP核心等等)。

我并不精通此类插件,但我想他们可能会使用template_redirect 钩子加载他们的模板,而不是匹配到移动浏览器上活动主题的模板。

我认为他们在官方存储库中有很多关于这个主题的插件,您可以通过查看他们的代码来了解使用的常见技术。

SO网友:Niraj Chauhan

如果我没有错,请尝试此代码

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

然后写下这个

require_once ($includes_path . \'file name\');

SO网友:Hamza

我想,我错误地解释了我的问题,所以我在子评论中解释了更多:

我所需要的就是:在不同的目录中激活另一个主题,然后做这样的事情

首先:

注册新主题目录:

register_theme_directory( WP_PLUGIN_DIR . \'/mobview/theme\' );

第二:

要添加过滤器以使用此主题,请执行以下操作:

function loading_mobv_template() {
    return \'hamzamob\';
}

function loading_mobv_style() {
    return \'hamzamob\';

 }

dd_filter(\'stylesheet\',\'loading_mobv_style\');
add_filter(\'template\',\'loading_mobv_template\'); 
现在,我需要做的就是选择浏览器是否为移动浏览器,然后激活该操作。

非常感谢。

更新:这是我第一个问题的答案。谢谢:)

结束

相关推荐

Adding goodies to themes

如何在主题更新时向Arjuna-X等主题添加内容而不丢失?儿童主题是一种很好的方式,还是有其他选择?如果新版本的主题对我添加的功能具有本机支持,该怎么办?