Woocommerce 产品自定义评论标签挂钩

Posted

技术标签:

【中文标题】Woocommerce 产品自定义评论标签挂钩【英文标题】:Woocommerce product custom review tab hook 【发布时间】:2021-12-03 09:12:50 【问题描述】:

您好,我正在创建一个 woocommerce wordpress 网站,我正在尝试用我们自己的 Bazaarvoice 集成来替换默认评论显示。所以我回调了评论选项卡以显示我自己的函数,该函数获取产品的型号并将其放入代码中以显示 bazaarvoice 评论显示。该代码有效,除了global $product 无效,因为我真的不知道如何使用钩子。我知道函数 bv_reviews_tab 的 add_action 不正确,所以我不确定我应该放什么。我整天都在绞尽脑汁

add_filter( 'woocommerce_product_tabs', 'woo_renam_tabs', 98 );
function woo_renam_tabs( $tabs ) 
$tabs['additional_information']['title'] = __( 'Product Data' );    // Rename the additional information tab
$tabs['additional_information']['callback'] = 'woocommerce_product_additional_information_tab';
$tabs['reviews']['callback'] = 'bv_reviews_tab';

return $tabs;


add_action( 'woocommerce_product_tabs', ' bv_reviews_tab' );
function bv_reviews_tab( ) 

global $product;

if ( $product->is_type('simple' ) ) 

$model = esc_attr( get_post_meta( $product->get_id(), '_model_number', true ) );
   

elseif ( $product->is_type('variable' ) ) 
    // Get childIDs in an array
    $children_ids = $product->get_children();

    // Loop
    foreach ( $children_ids as $child_id ) 
        // Get product
        $product = wc_get_product( $child_id ); 

        $model = esc_attr( get_post_meta( $child_id, '_model_number', true ) );
    
    
    ?>
   <div 
    data-bv-show="reviews"
  data-bv-product-id= "<?php echo $model; ?>"                                                                                                                                                                                                                                                                                                         
   >
  </div>
  <?php
   

【问题讨论】:

【参考方案1】:

在这种情况下不需要add_actionwoo_renam_tabs 函数中给出的 callback 值将触发您的自定义函数。删除 add_action 行,你应该很高兴。 global $product 也可以。

此外,您需要为评论选项卡命名,并确保在 WooCommerce >设置 > 产品中启用评论选项卡

这是我测试过并且正在运行的代码:

add_filter( 'woocommerce_product_tabs', 'woo_renam_tabs', 98 );
function woo_renam_tabs( $tabs ) 
$tabs['additional_information']['title'] = __( 'Product Data' );    // Rename the additional information tab
$tabs['additional_information']['callback'] = 'woocommerce_product_additional_information_tab';
$tabs['reviews']['title'] = __( 'Reviews' ); ;
$tabs['reviews']['callback'] = 'bv_reviews_tab';
return $tabs;


function bv_reviews_tab() 
global $product;
 ?>
<div data-bv-show="reviews">
    <?php echo $product->get_name();?>
</div>
<?php

【讨论】:

这对我没有任何作用。我开始时没有 add_action 但唯一发生的问题是它由于某种原因没有识别全局 $product ,因为它没有从中获得任何价值。我正在尝试获取自定义元字段(型号)而不是名称,并且我知道该功能有效,因为我以前使用过它。

以上是关于Woocommerce 产品自定义评论标签挂钩的主要内容,如果未能解决你的问题,请参考以下文章

单个产品页面上的 Woocommerce 钩子溢出

通过自定义前端表单设置 Woocommerce 产品标签和类别

php WooCommerce添加自定义产品标签

php WooCommerce添加自定义产品标签

如何将自定义挂钩添加到 Woocommerce 的自定义插件

可变产品选择器:获取实时选择的值