【问题标题】:Display WooCommerce variable subscriptions and its variations in a drop down list在下拉列表中显示 WooCommerce 变量订阅及其变体
【发布时间】:2020-07-17 00:39:07
【问题描述】:

我一直在创建一个插件,我正在尝试将所有 woo commerce 订阅和订阅产品中的变体拉到一个下拉列表中。

我已成功将顶级产品拉入下拉列表,但由于某种原因,该产品的变体未显示在我的列表中。

有什么想法吗?

这是我认为将产品添加到列表中的代码。我是否需要更改类型才能将变体添加到列表中,而不仅仅是顶级产品?

// get product list...
          $query = new WC_Product_Query( array(
              'limit' => -1,
              'orderby' => 'date',
              'order' => 'DESC',
              'return' => 'all',
              'type' => array('variable-subscription', 'subscription')
          ) );

   

【问题讨论】:

    标签: php wordpress woocommerce woocommerce-subscriptions product-variations


    【解决方案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;
    

    经过测试并且有效。

    【讨论】:

    • @scott5500 如果这个答案回答了你的问题,你可以请accept回答,谢谢。
    猜你喜欢
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-27
    • 2020-02-24
    • 1970-01-01
    相关资源
    最近更新 更多