php - WooCommerce wc_get_lated_products 功能不起作用

标签 php wordpress woocommerce product hook-woocommerce

作为一名开发人员,我尝试开发一个基于 WooCommerce 的插件。我想在单个产品页面的 woocommerce_after_add_to_cart_button Hook 中添加相关产品:

function custom_popup_on_add_to_cart(){
    global $product;

    $related_products=wc_get_related_products($product->get_id());

    var_dump($related_products); // Is empty
}
add_action('woocommerce_after_add_to_cart_button','custom_popup_on_add_to_cart');

最佳答案

请注意,产品可以通过三种方式相互关联:追加销售、交叉销售或通过具有相同的标签或类别,这是“相关产品”。

参见:Set up Related Products, Up-Sells and Cross-Sells

因此,如果函数 wc_get_lated_products() 未输出相关产品 ID 数组,那是因为您需要为每个产品设置类别和标签。


在单个产品页面的“添加到购物车”按钮后有两种方法添加相关产品。

更简单的方法:

// Remove related products from their default location
remove_action('woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20);
// Add back related products in a different location
add_action('woocommerce_after_add_to_cart_button', 'woocommerce_output_related_products', 10); 

或其他方式(允许更改参数):


// Remove related products from their default location
remove_action('woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20);

// Add back related products in a different location
add_action('woocommerce_after_add_to_cart_button', 'custom_output_related_products');
function custom_output_related_products() {
    woocommerce_related_products( array(
        'posts_per_page' => 4,
        'columns'        => 4,
        'orderby'        => 'rand', // @codingStandardsIgnoreLine.
    ));
} 

两种方法都有效。


如果您想删除标题“相关产品”,请使用:

add_filter( 'woocommerce_product_related_products_heading', '__return_false' );

如果您想更改标题“相关产品”,请使用:

add_filter( 'woocommerce_product_related_products_heading', 'custom_related_products_heading' );
function custom_related_products_heading( $heading ) {
    return __( 'Similar products', 'woocommerce' );
} 

相关:Get and display related products in WooCommerce

关于php - WooCommerce wc_get_lated_products 功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76938118/

相关文章:

php - 在循环中获取 mysqli_fetch_array 中的下一行 用数据库数据填充 HTML 表单

php fatal error UserTest setUp 函数的声明

wordpress - 有人窃取了我网站的全部内容,并且在 Google 中的排名已经超过了我

css - 在 WooCommerce/WordPress 中使用 CSS 定位产品属性

javascript - jquery 函数在一个页面中有效,但在具有相同属性的其他页面中无效(但它在控制台上有效)

php - 从抽象类中的静态函数获取类名

php - wordpress如何存储wp_usermeta?

html - 覆盖 CSS 背景图片

javascript - 从仪表板页面编辑器将 JavaScript 添加到 WordPress 页面

wordpress - 如果默认情况下不可用,如何将 "$email"传递到 WooCommerce 电子邮件模板文件