Отображение подписок на переменную WooCommerce и ее вариантов в раскрывающемся списке
Я создаю плагин и пытаюсь вывести все подписки woo commerce и варианты продукта подписки в раскрывающийся список.
Я успешно перенес продукт верхнего уровня в раскрывающийся список, но по какой-то причине варианты этого продукта не отображаются в моем списке.
Есть идеи?
Я считаю, что это код, который добавляет продукты в список. Нужно ли мне вносить изменения в тип, чтобы добавить в список варианты, а не только продукт верхнего уровня?
// get product list...
$query = new WC_Product_Query( array(
'limit' => -1,
'orderby' => 'date',
'order' => 'DESC',
'return' => 'all',
'type' => array('variable-subscription', 'subscription')
) );
1 ответ
В приведенном ниже коде будут отображаться все продукты подписки WooCommerce (простые подписки, переменные подписки и их доступные варианты подписки:
// Get all Subscription products
$subscription_products = wc_get_products( array(
'type' => array('variable-subscription', 'subscription'),
'limit' => -1,
'orderby' => 'date',
'order' => 'DESC'
) );
if ( ! empty($subscription_products) ):
$html = '<div class="products-dropdown"><select name="products-select" id="products-select">
<option value="">'.__('Choose some other product').'</option>';
foreach( $subscription_products as $product ) {
$html .= '<option value="'.$product->get_id().'">'.$product->get_name().'</option>';
// Get Subscription variation (from variable subscription product)
if( $product->is_type('variable-subscription') ) {
print_pr(($product->get_id(). ' ' . $product->get_name()));
// Loop through subscription variations
foreach( $product->get_children() as $variation_id ) {
// Get the WC_Product_Variation object
$variation = wc_get_product( $variation_id );
// The available subscription variation
if( $variation->variation_is_visible() ) {
$html .= '<option value="'.$variation_id.'">'.$variation->get_name().' (variation)</option>';
}
}
}
}
$html .= '</select><p style="margin-top:1em;">';
$html .= '<a href="#" data-quantity="1" class="button alt disabled off" data-product_id="" data-product_sku="" rel="nofollow">Add to cart</a>';
// Output
echo $html . '</p></div>';
endif;
Проверено и работает.