Вы не можете получить идентификатор продукта определенного сгруппированного продукта через один из его дочерних идентификаторов продукта, поскольку каждый дочерний элемент может быть во многих различных сгруппированных продуктах.
Единственные данныекоторые определяют IDS дочерних продуктов для сгруппированного продукта, расположены в таблице wp_postmeta
вокруг meta_key
_children
как массива идентификаторов дочерних продуктов.
Теперь, если 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;
}
Код входит в файл function.php вашей активной дочерней темы(или активная тема).Протестировано и работает.
ИСПОЛЬЗОВАНИЕ
Здесь ниже 738
- это один из дочерних идентификаторов из сгруппированного продукта.Это также может быть динамическое значение через переменную…
$parent_grouped_id = get_parent_grouped_id( 738 );
ДОБАВЛЕНИЕ - Получить все сгруппированные продукты, используя WC_Product_Query
:
1) Массив сгруппированных продуктов Объекты :
$grouped_products = wc_get_products( array( 'limit' => -1, 'type' => 'grouped' ) );
1) Массив сгруппированных продуктов IDS только:
$ids = wc_get_products( array( 'limit' => -1, 'type' => 'grouped', 'return' => 'ids' ) );