WooCommerce评论_模板筛选器未触发

时间:2015-07-01 作者:W00tW00t111

我有一个通过wp\\U ajax调用的模板文件,该文件返回特定WooCommerce产品的数据。

在模板文件的“选项卡”部分,每个选项卡都工作正常:

说明-良好其他信息-良好自定义选项卡-良好唯一未呈现选项卡面板内容的选项卡是评论选项卡。

有趣的是选项卡链接(li) 显示正确的选项卡计数。但是,当您单击该链接时,审阅面板不再显示:无并设置为活动-不显示任何内容。(这已在开发工具中得到验证)。

调用所有单个选项卡的代码是:

<?php call_user_func( $tab[\'callback\'], $key, $tab ) ?>
在哪里$tab 是具有以下内容的数组:

查看选项卡调用指定的WooCommercecomments_template 回调。

这应该会触发钩入class WC_Template_Loader:

add_filter( \'comments_template\', array( __CLASS__, \'comments_template_loader\' ) );
在测试中,我将var\\uWC_Template_Loader init函数和add\\u过滤器所在的init函数正在运行。

但是,当我var\\u在comments_template_loader() 函数,则不返回任何内容。

顺便提一下,所有其他WooCommerce生成的内容都正确呈现(global $woocommerce, $post, $product 已声明)。

为什么当所有其他默认的Wordpress标签过滤器都在运行时,这个过滤器没有运行?

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

好吧,对于那些希望在实际的单一产品页面上不包含WooCommerce评论标签的人来说,这里有一个秘诀:

在模板文件中,您需要:

global $withcomments;
$withcomments = true;
然后为评论模板添加过滤器:

//add filter to use our custom review template
add_filter(\'comments_template\',\'{{YOUR_HELPER_FUNCTION}}\');

/**
* Hook function for using custom quickview review template
* @return [string] [file path to the template]
*/
function YOUR_HELPER_FUNCTION(){
    $template = LCS_DIR . "../templates/tmpl-single-product-reviews.php";
    if ( file_exists( $template ) )
        return( $template );
}
$template 是要使用的模板文件的完整文件路径。

巴达宾,你完了!

SO网友:gregbast1994

或者,您可以将reviews选项卡的回调更改为自己的函数,该函数调用自定义模板。

functions.php

add_filter( \'woocommerce_product_tabs\', \'fpusa_custom_review_tab\', 98 );
function fpusa_custom_review_tab( $tabs ) {
    // change the callback for the reviews tab
    $tabs[\'reviews\'][\'callback\'] = \'fpusa_get_comments_template\';
    return $tabs;
}

function fpusa_get_comments_template(){
    // looks for a file in /yourtheme/woocommerce/single-product/customer_reviews.php
    wc_get_template(\'single-product/customer_reviews.php\');
}

结束

相关推荐

Cannot override hooks.php

我为网络黑猩猩的“反应主题”构建了一个儿童主题。我想换一个钩子。所以我想我需要钩子。我的孩子主题中的php文件。所以我从父母那里复制了它。我制定了相同的层次结构(我想这是正确的方法)。wp-content/[my_child_theme]/core/includes/hooks.php 将文件复制到主题根目录没有帮助。我还试图重新创建这个关键钩子。我把代码放在子函数中。php文件,但它也不起作用,因为挂钩发生在主题内容之后(只是我的asumtion)。所以问题很简单:如何覆盖父主题的挂钩。php