Woocommerce - 플러그인에서 제품 유형을 확인하는 방법
워드프레스/우커머스는 처음이라 커스텀 플러그인을 만드는 것을 막 시작했습니다.
지금까지 API를 통해 커스텀 woocommerce 설정을 추가했습니다.
제품 데이터 탭의 단일 제품에 사용자 지정 필드를 추가하는 문제가 발생했습니다.
다음 코드를 사용하여 표시할 수 있었습니다.
add_action( 'woocommerce_product_options_general_product_data', array( $this, 'cuzd_general_fields' ) );
add_action( 'woocommerce_process_product_meta', array( $this, 'cuzd_general_fields_save') );
하지만 지금은 제품의 종류가 단순한지 아니면 변형인지 확인해야 합니다.다음을 시도했습니다.
$product = new WC_Product( get_the_ID() );
if( $product->is_type( 'simple' ) ) {
//
}
단, 다음과 같은 에러가 발생합니다.
Fatal error: Class 'WC_Product' not found in ....
제품 클래스를 호출하기 전에 시작하려고 합니다.클래스 플러그인의 전체 형식이 잘못되었을 수 있습니다.좋은 지침/베스트 프랙티스가 있는 어떤 독서 자료라도 감사할 것입니다.
아니면 위의 간단한 수정사항이라면 알려주세요.
Woo 클래스에 가장 빨리 접속할 수 있는 것은woocommerce_loaded현재 발사되고 있는 훅plugins_loaded훅. 만약 당신이 돈을 절약하고 있다면woocommerce_process_product_meta그러면 콜백은 모든 클래스가 올바르게 로드됩니다.콜백 외부에서 테스트하고 있는 경우(후크에 전혀 접속되어 있지 않은 경우)모든 클래스가 제대로 로드되지 않을 수 있습니다.
또, 콜을 시도하고 있는 경우는,get_the_ID()이 되기 전에WP_Post개체가 설정되었습니다. 올바른 값을 얻을 수 없습니다.
보다 완전한cuzd_general_fields_save루틴은 다음과 같습니다.
/**
* Save meta box data.
*
* @param int $post_id WP post id.
*/
public function cuzd_general_fields_save( $post_id ) {
$_product = wc_get_product( $post_id );
if( $_product->is_type( 'simple' ) ) {
// do stuff for simple products
} else {
// do stuff for everything else
}
$_product->save();
}
Woo 3.0에 대한 업데이트는 다음과 같습니다.woocommerce_admin_process_product_object따라서 더 이상 제품 개체를 인스턴스화하거나 실행할 필요가 없습니다.save()우씨가 핵심으로 다룰 것이기 때문입니다.
add_action( 'woocommerce_admin_process_product_object', array( $this, 'cuzd_general_fields_save') );
그러면 콜백이 다음과 같이 변경됩니다.
/**
* Save meta box data.
*
* @param obj $_product WC_Product.
*/
public function cuzd_general_fields_save( $_product ) {
if( $_product->is_type( 'simple' ) ) {
// do stuff for simple products
} else {
// do stuff for everything else
}
}
다음은 제품의 인스턴스를 생성하지 않고 제품 유형을 확인하는 한 가지 방법입니다.
$product_type = get_the_terms( $product_id,'product_type')[0]->slug;
간단한 방법은 단순히 게시물의 가치를 확인하는 것입니다.select다음 작업을 수행할 수 있습니다.
$product_type = $_POST['product-type'];
if ( $product_type == 'simple' ) {
// do what you want
}
언급URL : https://stackoverflow.com/questions/26766257/woocommerce-how-to-check-product-type-in-plugin
'codememo' 카테고리의 다른 글
| Angular의 UI 라우터에 URL이 없는 상태의 파라미터JS (0) | 2023.03.14 |
|---|---|
| TypeScript에서 오브젝트에 속성을 동적으로 할당하려면 어떻게 해야 합니까? (0) | 2023.03.14 |
| @트랜잭션 주석은 saveAndFlush에서 작동합니까? (0) | 2023.03.14 |
| Oracle에 타임스탬프를 삽입하는 방법 (0) | 2023.03.14 |
| WP rest API 제목별 게시물 가져오기 (0) | 2023.03.14 |