WooCommerce Hook - woocommerce_after_cart_item_name



我使用一个函数来添加自定义元到产品。我在产品循环woocommerce_after_shop_loop_item和产品单页woocommerce_product_meta_end上使用了以下挂钩。

因此,当应用程序通过使用钩子在CART PAGE产品/项目上获得相同的结果时woocommerce_after_cart_item_name不工作,没有结果。

如果钩子woocommerce_after_cart_item_name与前面提到的其他钩子一起工作,为什么它不工作?

这是我使用的代码。我只是改变钩子,使其显示在产品循环和产品单页,需要它显示在购物车产品以及。我只是想知道为什么它不能与购物车项目挂钩…

public function woocommerce_after_cart_item_name() 
{
global $product;
if ( !PluginOptions::value('shop_season') && !PluginOptions::value('shop_car_type') )
return;
$product_id = $product->get_id();
$season = get_post_meta( $product_id, 'season', true );
$car_type = get_post_meta( $product_id, 'car_type', true );
$tips_seasons   = $this->ui_tips_season();
$tips_car_types = $this->ui_tips_car_types();
?>
<div class="tyre-details tyre-tips">
<?php if ( PluginOptions::value('shop_season') && $season ): ?>
<?php echo $tips_seasons[ strtolower($season) ]; ?>
<?php endif ?>
<?php if ( PluginOptions::value('shop_car_type') && $car_type ): ?>
<?php echo $tips_car_types[ strtolower($car_type) ]; ?>
<?php endif ?>
</div>
<?php
}

它来自一个插件。我只是从woocommerce的支持给出了这个代码,但我不知道如何完成它。他说用我的meta_keys替换代码,我将在下面发布。你能帮我完成这个吗?或者告诉我哪里需要替换。我的meta_keys是$season和$car-type,但我不知道如何应用woocommerce提供的代码。

// Display custom cart item meta data (in cart and checkout)
add_filter( 'woocommerce_get_item_data',     'display_cart_item_custom_meta_data', 10, 2 );
function display_cart_item_custom_meta_data( $item_data, $cart_item ) {
$meta_key = 'PR CODE';
if ( isset($cart_item['add_size']) && isset($cart_item['add_size']        [$meta_key]) ) {
$item_data[] = array(
'key'       => $meta_key,
'value'     => $cart_item['add_size'][$meta_key],
);
}
return $item_data;
}
// Save cart item custom meta as order item meta data and display it      everywhere on orders and email notifications.
add_action( 'woocommerce_checkout_create_order_line_item',     'save_cart_item_custom_meta_as_order_item_meta', 10, 4 );
function save_cart_item_custom_meta_as_order_item_meta( $item, $cart_item_key, $values, $order ) {
$meta_key = 'PR CODE';
if ( isset($values['add_size']) && isset($values['add_size'][$meta_key]) ) {
$item->update_meta_data( $meta_key, $values['add_size'][$meta_key] );
}
}

我找到了ClassName(类FeatureTyreTips),并将其添加到您提供的代码中。我在functions.php中输入了这个,它说加载购物车页面时出现致命错误。我也试着把它放在cart.php与相同的结果…我尝试在相同的插件文件,这段代码来自最初。3个地点都没有工作…唯一的区别是,当加载购物车页面时,在插件文件中添加和激活新代码时,它没有显示致命错误。什么好主意吗?谢谢Vdgeatano

Fatal Error"很可能是由于">非静态方法不能静态地调用";

我现在已经更正了代码。

考虑到代码中缺少的类名是FeatureTyreTips,在产品名称后添加一些文本的正确代码是:

add_action( 'woocommerce_after_cart_item_name', 'add_custom_text_after_cart_item_name', 10, 2 );
function add_custom_text_after_cart_item_name( $cart_item, $cart_item_key ) {

// create an instance of the "PluginOptions" class
$PluginOptions = new PluginOptions();
if ( ! $PluginOptions->value( 'shop_season' ) && ! $PluginOptions->value( 'shop_car_type' ) ) {
return;
}
$product = $cart_item['data'];
$season = get_post_meta( $product->get_id(), 'season', true );
$car_type = get_post_meta( $product->get_id(), 'car_type', true );
// create an instance of the "FeatureTyreTips" class
$FeatureTyreTips = new FeatureTyreTips();
$tips_seasons   = $FeatureTyreTips->ui_tips_season();
$tips_car_types = $FeatureTyreTips->ui_tips_car_types();
if ( ! $PluginOptions->value('shop_season') || ! $season ) {
$season = '';
}
if ( ! $PluginOptions->value('shop_car_type') || ! $car_type ) {
$car_type = '';
}
$html = '<div class="tyre-details tyre-tips">' . trim( $season . ' ' . $car_type ) . '</div>';
echo $html;
}

代码已经过测试(在可能的情况下)并且可以工作。
需要添加到主题的functions.php文件或插件中

相关内容

  • 没有找到相关文章

最新更新