Woocommerce Link связывает продукты с выпадающим списком сгруппированных продуктов - PullRequest
0 голосов
/ 09 мая 2019

Таким образом, в основном на моем WordPress-сайте я создал страницу сгруппированных продуктов woocommerce, содержащую три продукта, которые являются комплектами продуктов, поэтому, когда люди заказывают эти определенные продукты, они показывают свои компоненты в нашей системе. Я не был доволен форматом таблицы для сгруппированной страницы продукта, поэтому я изменил ее на выпадающий список. Проблема в том, что когда я выбираю товар и нажимаю «добавить в заказ», он говорит: «Пожалуйста, выберите товар, который нужно добавить в корзину…», поэтому мне нужно выяснить, как правильно связать товары, чтобы они действительно добавлялись в корзину.

Это grouped.php, который я использовал.

<form class="cart grouped_form" action="<?php echo esc_url( apply_filters( 'woocommerce_add_to_cart_form_action', $product->get_permalink() ) ); ?>" method="post" enctype='multipart/form-data'>


    <?php
      $quantites_required      = false;
      $previous_post           = $post;
      $grouped_product_columns = apply_filters( 'woocommerce_grouped_product_columns', array(
        'quantity',
        'label',
        'price',
      ), $product );
      $options = '';
      foreach ( $grouped_products as $grouped_product_child ) {
        $post_object        = get_post( $grouped_product_child->get_id() );
        $quantites_required = $quantites_required || ( $grouped_product_child->is_purchasable() && ! $grouped_product_child->has_options() );
        $post               = $post_object; // WPCS: override ok.
        setup_postdata( $post );

        //echo '<div id="product-' . esc_attr( $grouped_product_child->get_id() ) . '" class="card woocommerce-grouped-product-list-item ' . esc_attr( implode( ' ', wc_get_product_class( '', $grouped_product_child->get_id() ) ) ) . '">';

        // Output columns for each product.
        foreach ( $grouped_product_columns as $column_id ) {
          do_action( 'woocommerce_grouped_product_list_before_' . $column_id, $grouped_product_child );
          if ($column_id === 'quantity'){
            do_action( 'woocommerce_before_add_to_cart_quantity' );
            $options .= '<option value="quantity[' . $grouped_product_child->get_id() . ']">' . $grouped_product_child->get_name() .$grouped_product_child->get_price_html(). '</option>';
            do_action( 'woocommerce_after_add_to_cart_quantity' );
          }
          // switch ( $column_id ) {

          //   case 'label':
          //     $value  = '<div class="card-title" for="product-' . esc_attr( $grouped_product_child->get_id() ) . '">';
          //     $value .= $grouped_product_child->is_visible() ? '<span>' . $grouped_product_child->get_name() . '</span>' : $grouped_product_child->get_name();
          //     $value .= '</div>';
          //     break;
          //   case 'price':
          //     $value = $grouped_product_child->get_price_html() . wc_get_stock_html( $grouped_product_child );
          //     break;
          //   case 'quantity':
          //     ob_start();

          //     if ( ! $grouped_product_child->is_purchasable() || $grouped_product_child->has_options() || ! $grouped_product_child->is_in_stock() ) {
          //       woocommerce_template_loop_add_to_cart();
          //     } elseif ( $grouped_product_child->is_sold_individually() ) {
          //       echo '<input type="checkbox" name="' . esc_attr( 'quantity[' . $grouped_product_child->get_id() . ']' ) . '" value="1" class="wc-grouped-product-add-to-cart-checkbox" />';
          //     } else {
          //       do_action( 'woocommerce_before_add_to_cart_quantity' );

          //       woocommerce_quantity_input( array(
          //         'input_name'  => 'quantity[' . $grouped_product_child->get_id() . ']',
          //         'input_value' => isset( $_POST['quantity'][ $grouped_product_child->get_id() ] ) ? wc_stock_amount( wc_clean( wp_unslash( $_POST['quantity'][ $grouped_product_child->get_id() ] ) ) ) : 0,
          //         'min_value'   => apply_filters( 'woocommerce_quantity_input_min', 0, $grouped_product_child ),
          //         'max_value'   => apply_filters( 'woocommerce_quantity_input_max', $grouped_product_child->get_max_purchase_quantity(), $grouped_product_child ),
          //       ) );

          //       do_action( 'woocommerce_after_add_to_cart_quantity' );
          //     }

          //     $value = ob_get_clean();
          //     break;
          //   default:
          //     $value = '';
          //     break;
          // }

          //echo '<div class="card-body woocommerce-grouped-product-list-item__' . esc_attr( $column_id ) . '">' . apply_filters( 'woocommerce_grouped_product_list_column_' . $column_id, $value, $grouped_product_child ) . '</div>'; // WPCS: XSS ok.

          do_action( 'woocommerce_grouped_product_list_after_' . $column_id, $grouped_product_child );
        }
       // echo '</div>';

      }
      ?>
      <div class="row">
        <div class="col-6 mb-3">
          <?php
          echo '<select class="multi-prod form-control">'.$options.'</select>';
          echo '<input type="hidden" class="input-text qty text" name="" value="">';
          $post = $previous_post; // WPCS: override ok.
          setup_postdata( $post );
          ?>
        </div>
      </div>

  <input type="hidden" name="add-to-cart" value="<?php echo esc_attr( $product->get_id() ); ?>" />

  <?php if ( $quantites_required ) : ?>

    <?php do_action( 'woocommerce_before_add_to_cart_button' ); ?>

    <button type="submit" class="single_add_to_cart_button button alt"><?php echo esc_html( $product->single_add_to_cart_text() ); ?></button>

    <?php do_action( 'woocommerce_after_add_to_cart_button' ); ?>

  <?php endif; ?>
</form>

<?php do_action( 'woocommerce_after_add_to_cart_form' ); ?>
...