我尝试为WooCommerce编写一个插件(https://github.com/bassjobsen/woocommerce-twitterbootstrap). 我希望我的模板加载如下:
我的自定义主题/模板路径/模板名称my plugin / template name
woocommerce/模板名称因此,如果主题文件夹中不存在模板,则从我的插件文件夹(如果存在)而不是Woocommece文件夹加载。在…上
http://www.skyverge.com/blog/override-woocommerce-template-file-within-a-plugin/ 如果找到模板加载的工作解决方案,请按
woocommerce_get_template
. 但这不适用于
woocommerce_get_template_part
导致此函数调用
locate_template
而不是
woocommerce_locate_template
(这是虫子吗?)。
问题:我想知道如何覆盖/操纵locate_template()
因此,它首先尝试从我的插件文件夹加载文件。或任何其他解决方案。
update 感谢@jesper i云加载模板:
function
my_template_redirect(){
//pages you want to make true, ex. is_shop()
global $woocommerce;
if(is_shop()) {
$plugin_dir = WP_PLUGIN_DIR.\'/\'.str_replace( basename( __FILE__), "", plugin_basename(__FILE__) );
var_dump($plugin_dir);
load_template($plugin_dir . \'/templates/archive-product.php\');
}
}
add_action(\'template_redirect\',\'my_template_redirect\');
<罢工>
/templates/archive-product.php
包括
content-product.php
来自同一插件模板目录。
content-product.php
利用
global $product
在本例中为null。是否需要加载其他函数来设置
$product
?
上面还给出了另一个错误:PHP警告:call\\u user\\u func\\u array()要求参数1是有效的回调,在/home/bass/Dropbox/testomgeving/jamedotheme/wordpress/wp includes/plugin中找不到函数“woomcommerce\\u before\\u main\\u content\\u grid”,或者函数名无效。php罢工>
使用上面的代码,我可以编写一个函数来在模板/归档产品中有条件地包含文件。php(so solved!)
最合适的回答,由SO网友:jepser 整理而成
我想你可以用template redirect 行动
我不测试它,但它应该可以工作:
function my_template_redirect(){
//pages you want to make true, ex. is_shop()
if(is_shop()) {
$plugin_dir = WP_PLUGIN_DIR.\'/\'.str_replace( basename( __FILE__), "", plugin_basename(__FILE__) );
load_template($plugin_dir . \'your-template.php\');
}
}
add_action(\'template_redirect\',\'my_template_redirect\');