Отображение подписок на переменную 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;

Проверено и работает.

Другие вопросы по тегам