sourcecode

Woocommerce에서 판매 중인 제품에 "세일" 제품 카테고리 추가

codebag 2023. 3. 19. 18:08
반응형

Woocommerce에서 판매 중인 제품에 "세일" 제품 카테고리 추가

WooCommerce 사이트의 일부로서 (페이지 매김과 필터링이 있는) 세일 페이지를 만들고 싶습니다.이를 위해 가장 좋은 방법은 판매의 일부인 게시물에 자동으로 추가되는 '판매' 카테고리를 갖는 것이라고 생각합니다(카테고리 페이지에서 자동으로 필터링 및 페이지 번호를 지정할 수 있습니다).

제품을 저장할 때 판매 카테고리를 프로그램에 추가하기 위한 코드를 가지고 있습니다.

function update_test( $product) { 
wp_set_object_terms($product, 'sale', 'product_cat', true );
}

add_action( 'save_post', 'update_test', 1, 2);`

단, 판매되지 않은 게시물을 저장해도 판매 카테고리가 추가되지 않도록 판매 중인 상품(판매가격이 설정되어 있는 경우)에만 발생했으면 합니다.나는 여러 가지 시도를 해봤지만 운이 없었다.시도했지만 효과가 없었습니다.

function update_test( $product ) { 
if($product->is_on_sale()){
wp_set_object_terms($product, 'sale', 'product_cat', true );
}
}

add_action( 'save_post', 'update_test', 1, 2);`

하지만 이게 내 사이트를 정지시켰어

좋은 생각 있어요?

앤디

갱신 2 (2018년 10월)

save_post WordPress 훅으로 인수와 연동하여 모든 종류의 게시물을 대상으로 합니다.커스텀 WooCommerce를 타겟으로 해야 합니다.post_type어떤 상태(그리고)에서 첫 번째로 post_status).

또한 포스트 오브젝트가 아니기 때문에 메서드를 사용할 수 없습니다.단, 판매가격이 상품에 설정되어 있는지 확인하는 기능을 이용하실 수 있습니다.

여기에서는, 완전하게 기능해, 테스트 끝난 코드를 나타냅니다(심플한 제품 전용).

add_action( 'save_post_product', 'update_product_set_sale_cat' );
function update_product_set_sale_cat( $post_id ) {
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
        return $post_id;
    }

    if ( ! current_user_can( 'edit_product', $post_id ) ) {
        return $post_id;
    }

    if( get_post_status( $post_id ) == 'publish' && isset($_POST['_sale_price']) ) {
        $sale_price = $_POST['_sale_price'];

        if( $sale_price >= 0 && ! has_term( 'Sale', 'product_cat', $post_id ) ){
            wp_set_object_terms($post_id, 'sale', 'product_cat', true );
        }
    }
}

코드가 기능합니다.php 파일에는 액티브한 아이 테마(또는 활성 테마).테스트 및 동작.

관련:Woocommerce에서 판매하지 않는 제품에서 판매 제품 카테고리 자동 삭제

이것을 하는 보다 편리한 방법은, 가변 제품에서도 동작하는 것으로, 어린이 테마의 function.php(또는 플러그인 경유 등)에 다음을 추가하는 것이라고 생각합니다.

add_action( 'woocommerce_update_product', 'update_product_set_sale_cat', 10, 2 );

function update_product_set_sale_cat( $product_id, $product ) {
    if ( $product->is_on_sale() ) {
        wp_add_object_terms($product_id, "sale", 'product_cat');
    } else { // this will also remove the sale category when the product in no longer on sale
        wp_remove_object_terms($product_id, "sale", 'product_cat');
    }
}

데이터베이스에서 제품이 업데이트/작성될 때마다 실행되는 후크를 사용합니다.

언급URL : https://stackoverflow.com/questions/40965522/adding-sale-product-category-to-products-that-are-on-sale-in-woocommerce

반응형