如何从woocommerce中的链接产品中获取分组的产品ID

ali*_*aha 4 php wordpress product woocommerce

我有一个分组产品product-1,它有许多链接产品:

-product-1(分组产品)

  • |__ product-2(简单或可变产品)
  • |__ product-3(简单或可变产品)

我想使用 product-2 的 ID 获取 product-1 的 ID

Loi*_*tec 5

您无法通过其子产品 ID 之一获取特定分组产品的产品 ID,因为每个子产品都可以位于许多不同的分组产品中。

定义分组产品的儿童产品 IDS 的唯一数据位于wp_postmeta表格周围的meta_key _children儿童产品 ID 数组中。

现在,如果要用于检索父分组产品 ID 的子产品 ID 只是一个唯一分组产品的子产品,则可以使用以下嵌入在函数中的 SQL 查询:

function get_parent_grouped_id( $children_id ){
    global $wpdb;
    $results = $wpdb->get_col("SELECT post_id FROM {$wpdb->prefix}postmeta
        WHERE meta_key = '_children' AND meta_value LIKE '%$children_id%'");
    // Will only return one product Id or false if there is zero or many
    return sizeof($results) == 1 ? reset($results) : false;
}
Run Code Online (Sandbox Code Playgroud)

代码位于活动子主题(或活动主题)的 function.php 文件中。测试和工作。

用法

以下738是儿童产品 ID 之一。它也可以是通过变量传递的动态值。

$parent_grouped_id = get_parent_grouped_id( 738 );
Run Code Online (Sandbox Code Playgroud)

ADDITION - 使用以下命令获取所有分组产品WC_Product_Query

  1. 分组产品数组对象

    $grouped_products = wc_get_products( array( 'limit' => -1, 'type' => 'grouped' ) );

  2. 仅限IDS的分组产品数组:

    $ids = wc_get_products( array( 'limit' => -1, 'type' => 'grouped', 'return' => 'ids' ) );