source

WooCommerce 가변상품 공지사항 이슈 - 상품 옵션을 선택해주세요

lovecheck 2023. 10. 14. 10:21
반응형

WooCommerce 가변상품 공지사항 이슈 - 상품 옵션을 선택해주세요

저는 전자상거래 사이트를 만들고 있습니다.WooCommerce Variable Product에 문제가 있습니다.

"카트에 추가" 버튼은 간단한 제품에서는 잘 작동하지만, 가변 제품에서는 작동하지 않습니다.그것이 주는 것을 줍니다."Please choose product options…"알려드립니다.

저는 모든 곳을 둘러보았고 온라인으로 몇 가지 제안을 시도했지만 아무 것도 효과가 없었습니다.그래서 WooCommerce 소스 파일을 찾아봤습니다.

기능에서:

function add_to_cart_handler_variable( $product_id ) {
    $adding_to_cart     = wc_get_product( $product_id );
    $variation_id       = empty( $_REQUEST['variation_id'] ) ? '' : absint( $_REQUEST['variation_id'] );
    $quantity           = empty( $_REQUEST['quantity'] ) ? 1 : wc_stock_amount( $_REQUEST['quantity'] );
    $missing_attributes = array();
    $variations         = array();
    $attributes         = $adding_to_cart->get_attributes();
    $variation          = wc_get_product( $variation_id );
...
if ( $missing_attributes ) {
        wc_add_notice( sprintf( _n( '%s is a required field', '%s are required fields', sizeof( $missing_attributes ), 'woocommerce' ), wc_format_list_of_items( $missing_attributes ) ), 'error' );
    } elseif ( empty( $variation_id ) ) {
        wc_add_notice( __( 'Please choose product options…', 'woocommerce' ), 'error' );
    } else {
        // Add to cart validation
        $passed_validation  = apply_filters( 'woocommerce_add_to_cart_validation', true, $product_id, $quantity, $variation_id, $variations );

        if ( $passed_validation && WC()->cart->add_to_cart( $product_id, $quantity, $variation_id, $variations ) !== false ) {
            wc_add_to_cart_message( $product_id );
            return true;
        }
    }
    return false;
}

elseif 절에 오류가 잡혔습니다.
그래서 나는 메아리치려고 했습니다.$variation_id,$variations,그리고.$variation. 아무도 그 안에 아무것도 들어있지 않아요 왜냐면 제가 메아리 칠 때$variation_id: 아무것도 출력되지 않습니다.

오류는 어떻게 해결할 수 있습니까?

상점 페이지에서는 가변 제품에 대한 추가 버튼을 사용할 수 없습니다. 카트에 추가하기 전에 먼저 단일 제품 페이지에서 이 가변 제품에 대한 옵션을 선택해야 합니다.

가변 제품 페이지에서는 일반적으로 "수레에 추가" 단추를 사용하기 전에 가변 제품에 대해 선택할 수 있는 옵션이 표시됩니다.그렇게 하지 않으면 오류 메시지가 나타납니다.
그래서 이 시점에서:

  1. 옵션이 제품 페이지에 표시되지 않습니다(백엔드 제품 페이지의 잘못된 설정, 테마의 버그 또는 일부 추가 플러그인).
    • 제품 백엔드 설정 확인
    • 기본 워드프레스 테마로 전환해 봅니다(이 문제가 여전히 있는지 확인합니다).
    • 대부분의 플러그인을 사용하지 않도록 설정합니다.
  2. 옵션이 표시됩니다.따라서 이 제품에 대한 옵션을 먼저 선택한 다음 카트에 추가합니다.

이 문제가 테마와 관련된 경우 테마 작성자에게 문의하여 지원 스레드 또는 티켓을 엽니다.


제품 ID에 대한 제품 변형:

가변 제품 ID에 대한 제품 변형을 프로그래밍 방식으로 가져오기

$product = wc_get_product( $product_id );
$product_variations = $product->get_available_variations();

echo var_dump($product_variations); // Displaying the array

그런 다음 첫 번째 변형 ID를 가져오려면:

$product = wc_get_product( $product_id );
$product_variations = $product->get_available_variations();

$variation_product_id = $product_variations [0]['variation_id'];
echo $variation_product_id; // Displaying the variation ID

또는 이 제품 ID의 모든 변형 ID 배열을 가져오려면:

$product = wc_get_product( $product_id );
$product_variations = $product->get_available_variations();

$arr_variations_id = array();
foreach ($product_variations as $variation) {
    $product_variation_id = $variation['variation_id'];
    array_push( $arr_variations_id, $product_variation_id );
}

echo var_dump($arr_variations_id); // Displaying the array of variations ID

참고 : 장바구니에 추가하기 버튼을 장보기 페이지에서 상품으로 이동하기로 변경

다른 사용자가 사용자 지정 테마를 작성할 때 예상대로 카트에 추가되지 않는 변형이 발생할 경우를 대비하여 테마가 /woocommerce/assets/js/frontend/add-to-cart-variation.min.js 스크립트를 로드하고 있는지 확인해야 할 수도 있습니다. - 스크립트를 대기열에 입력하여 수동으로 추가하는 곳마다 다음을 추가합니다.

wp_enqueue_script('wc-add-to-cart-variation');

이것으로 저는 문제가 해결되었습니다.

우리 모두는 공통적으로 다양한 스와치를 가지고 있지만, 테마가 호환되지 않는 오류(이상한 소리)가 있습니다.테스트하려면 2020년 테마로 전환하기만 하면 됩니다.그렇다면 2020 스위트를 당신의 필요에 맞게 만들고 우커머스 업데이트가 시작되면 개발자들이 쉬는 테마는 그만 사용하는 것을 추천합니다!코드가 이미 있기 때문에 스와치를 비활성화하면 도움이 되지 않습니다.행운을 빌어요.

저도 같은 문제에 직면해 있었습니다. ..당신의 변형 스와치 플러그인을 삭제하면 문제가 해결됩니다.

  1. 동일한 문제가 발생했습니다. ..자동 최적화 플러그인을 비활성화하여 문제가 해결되었습니다.

  2. 또한 어떤 플러그인을 비활성화할지 알기 위해서는 단순히 페이지나 웹사이트를 로드하고 요소나 개발자 모드를 검사한 다음 콘솔을 확인하여 오류의 원인을 확인하면 관련 플러그인과 연관된 다음 wp 대시보드에서 비활성화할 수 있습니다.

wishlist 플러그인을 사용하는데 카트에 가변 상품을 추가하려고 하니 '선택한 상품은 상품명의 변형이 아니므로 상품명을 방문하여 상품 옵션을 선택하십시오'라는 메시지가 나타납니다.

문제는 제 제품에 기본 변형이 없다는 것이었습니다.그래서 선택된 변형 없이 wishlist 제품에 사용자가 추가되었습니다.따라서 사용자가 카트에 이 제품을 추가하려고 하면 오류가 나타납니다.

여기 FIX입니다: 모든 캐리온 제품에 기본값 변경만 설정하세요! (수동 또는 코드를 통해)따라서 사용자는 빈 변형의 제품을 추가할 수 없습니다.기본적으로 변형을 선택하거나 사용자가 직접 변형을 변경합니다.

그래서 이제 위시리스트에서 우리는 다양성을 선택했고 모든 것이 정상적으로 작동합니다.모든 페이지, 아카이브, 위시리스트 등에서 작동합니다.행운을 빕니다.;)

기능을 수정해야 합니다.php 파일.wp-content/your 테마/기능으로 이동하기만 하면 됩니다.당신의 아이 테마에 php.여기서는 전체 코드를 보여드리고 주요 부분을 설명하겠습니다.따라서 프로그래밍 방식으로 WooCommerce 기본 제품 속성을 만드는 전체 PHP 스크립트는 다음과 같습니다.

add_action('woocommerce_before_single_product_summary', 'quadlayers_product_default_attributes');
function quadlayers_product_default_attributes() {
      global $product;
      if (!count($default_attributes = get_post_meta($product->get_id(), '_default_attributes'))) {
        $new_defaults = array();
        $product_attributes = $product->get_attributes();
        if (count($product_attributes)) {
          foreach ($product_attributes as $key => $attributes) {
            $values = explode(',', $product->get_attribute($key));
            if (isset($values[0]) && !isset($default_attributes[$key])) {
              $new_defaults[$key] = sanitize_key($values[0]);
            }
          }
          update_post_meta($product->get_id(), '_default_attributes', $new_defaults);
        }
      }
    }  

언급URL : https://stackoverflow.com/questions/38111163/woocommerce-variable-product-notice-issue-please-choose-product-options

반응형