我正在构建一个移动友好插件,并将主题目录放在插件目录中。
如果是移动浏览器,如何重定向到插件目录中的主题?
/wp-content/plugins/mobview/theme/
我已成功使用以下重定向:wp_redirect( plugins_url(\'/mobview/theme/index.php\') );
exit ;
但我在WordPress结构内的目录重定向中丢失了一些信息。我正在构建一个移动友好插件,并将主题目录放在插件目录中。
如果是移动浏览器,如何重定向到插件目录中的主题?
/wp-content/plugins/mobview/theme/
我已成功使用以下重定向:wp_redirect( plugins_url(\'/mobview/theme/index.php\') );
exit ;
但我在WordPress结构内的目录重定向中丢失了一些信息。你好@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倍以上的参与。
你误解了主题的运作机制。它确实有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\' )
;
第二:
要添加过滤器以使用此主题,请执行以下操作:
function loading_mobv_template() {
return \'hamzamob\';
}
function loading_mobv_style() {
return \'hamzamob\';
}
dd_filter(\'stylesheet\',\'loading_mobv_style\');
add_filter(\'template\',\'loading_mobv_template\');
现在,我需要做的就是选择浏览器是否为移动浏览器,然后激活该操作。非常感谢。
更新:这是我第一个问题的答案。谢谢:)
如何在主题更新时向Arjuna-X等主题添加内容而不丢失?儿童主题是一种很好的方式,还是有其他选择?如果新版本的主题对我添加的功能具有本机支持,该怎么办?