首先从我的插件文件夹加载WooCommerce模板

时间:2013-08-18 作者:Bass Jobsen

我尝试为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!)

    1 个回复
    最合适的回答,由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\');
    

    结束

    相关推荐

    Display All Non-Used Plugins

    我的公司目前拥有大约20个多站点,并且每天都在增长。我们正在尝试通过插件并制定标准。IE,表单使用插件X。然而,我们还没有找到一种单一的方法来检查和系统地显示哪些插件甚至没有被使用。是否有一个功能可以向我们显示已使用或未使用的插件?我试着寻找我能想到的一切,但我一生都找不到答案。