Woocommerce의 Linked Product에서 커스텀 필드를 추가하는 방법
Stack Overflow의 모든 개발자에게 감사드립니다.
Woocommerce의 Linked Product 섹션에 필드를 추가하고 싶습니다.필드는 업셀/크로셀과 비슷해야 합니다.
지금까지의 코드:-
add_action( 'woocommerce_product_options_linked_product_data', 'woocom_general_product_data_custom_field' );
woocommerce_wp_text_input(
array(
'id' => '_upsizing_products',
'label' => __( 'Upsizing Products', 'woocommerce' ),
'placeholder' => 'Upsizing Products',
'desc_tip' => 'true',
'description' => __( 'Select Products Here', 'woocommerce' )
)
);
위의 코드에는 콤보박스가 필요합니다.예를 들어 입력란에 3자를 입력하면 선택 가능한 일치 제품 목록이 나타납니다.업셀 / 크로스셀과 유사합니다.
이 커스텀 필드를 구현할 수 있도록 도와주세요.잘 부탁드립니다.
편집: 누구 없나요?
위의 코드에는 몇 가지 정보가 누락되어 있습니다.
- 첫 번째 줄에 사용한 후크가 존재하지 않습니다.오른쪽 훅은
woocommerce_product_options_related
- 사용자 지정 필드를 설계한 코드가 함수 안에 없습니다.
- 표준 텍스트 필드를 만들고 있습니다."Select Product(제품 선택)" 드롭다운을 원하는 경우 다른 방법을 사용해야 합니다.이것은 후크에서 사용하는 기능 안에 있어야 합니다.
- 사용자 지정 필드에서 실제로 데이터를 저장하는 후크와 함수가 없습니다.
1. 적절한 후크/액션 찾기
사용할 올바른 훅을 찾으려면 WoocCommerce 플러그인 내에서 "woocommerce_product_options_"를 검색하면 약 6개의 PHP 파일이 나타납니다.이러한 파일 중 하나는 "html-product-data-linked-products.php"입니다.이 파일에는 특정 WooCommerce 섹션의 기존 옵션이 모두 포함되어 있습니다.또한 이러한 옵션을 표시하는 데 사용되는 후크도 포함되어 있습니다.
파일을 열고 확인하세요.후크는 페이지 하단에 있습니다.
풀패스: /wp-content/plugins/woocommerce/includes/admin/metaboxes/뷰/
2. 드롭다운 생성
제품 검색을 포함한 선택 드롭다운을 만들려면 위의 코드와 크게 다른 코드가 필요합니다.
여유 시간은 위에서 설명한 파일에 있는 기존 옵션 중 하나를 복사하여 붙여넣은 다음 필요에 따라 수정할 수 있습니다.
이 모든 것을 다음과 같은 함수에 배치해야 합니다.woocom_linked_products_data_custom_field()
.
2.1. ID/이름 변경
코드에서 가장 먼저 수정해야 하는 것은 물론 필드의 고유 ID/이름입니다.이것은 에 배치되어 있습니다.label
- 태그()for
및select
- 태그(id
및 ).
은 아이디/이름이 있어야 .upsizing_products
라벨 " " " " 입니다.Upsizing Products
:
<label for="upsizing_products"><?php _e( 'Upsizing Product', 'woocommerce' ); ?></label>
<select class="wc-product-search" multiple="multiple" style="width: 50%;" id="upsizing_products" name="upsizing_products[]" data-placeholder="<?php esc_attr_e( 'Search for a product…', 'woocommerce' ); ?>" data-action="woocommerce_json_search_products_and_variations" data-exclude="<?php echo intval( $post->ID ); ?>">
메모: 잊지 말고
[]
이름 태그의 끝을 지정하지 않으면 데이터가 저장되지 않습니다.
2.2. 이미 선택한 제품 표시
다음으로 WooCommerce 섹션에서 이미 선택한 제품과 드롭다운을 표시 및 하이라이트합니다.
위해서는, 「」를 해 주세요.$product_ids
- 아, 줄 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아.
$product_ids = get_post_meta( $post->ID, '_upsizing_products_ids', true );
대신 기존 옵션 중 하나(예: cross_sell_ids)가 아닌 데이터베이스 사용자 지정 필드에서 제품 ID가 검색됩니다.
주의:
_upsizing_products_ids
는 데이터베이스 내의 메타키 이름입니다.이 키와 관련된 메타 값에는 모든 필드 데이터가 포함됩니다.사용자 지정 필드를 저장 및 검색하는 데 사용됩니다.
2.3. WooCommerce 섹션의 필드를 표시합니다.
마지막으로 기능이 올바르게 잠기면 링크된 제품 섹션에 표시됩니다.
add_action( 'woocommerce_product_options_related', 'woocom_linked_products_data_custom_field' );
3. 데이터 저장 및 저장
이제 오른쪽 섹션 안에 사용자 지정 필드가 표시됩니다.다음으로 데이터를 저장하고 데이터베이스에 저장합니다.
기능에서는 「」를 합니다.$_POST
것, 「데이터 취득」을 실시합니다.update_post_meta
post-ID, 고유 필드 ID/이름(메타 키) 및 자체 데이터(메타 값)를 포함하는 데이터베이스에 데이터를 저장합니다.
function woocom_linked_products_data_custom_field_save( $post_id ){
$product_field_type = $_POST['upsizing_products'];
update_post_meta( $post_id, '_upsizing_products_ids', $product_field_type );
}
add_action( 'woocommerce_process_product_meta', 'woocom_linked_products_data_custom_field_save' );
여기 전체 코드가 있습니다.에 ★★★★★★★★★★★★★★★★★★★★★★★functions.php
「 」의 「 」의 「 」
// Display the custom fields in the "Linked Products" section
add_action( 'woocommerce_product_options_related', 'woocom_linked_products_data_custom_field' );
// Save to custom fields
add_action( 'woocommerce_process_product_meta', 'woocom_linked_products_data_custom_field_save' );
// Function to generate the custom fields
function woocom_linked_products_data_custom_field() {
global $woocommerce, $post;
?>
<p class="form-field">
<label for="upsizing_products"><?php _e( 'Upsizing Product', 'woocommerce' ); ?></label>
<select class="wc-product-search" multiple="multiple" style="width: 50%;" id="upsizing_products" name="upsizing_products[]" data-placeholder="<?php esc_attr_e( 'Search for a product…', 'woocommerce' ); ?>" data-action="woocommerce_json_search_products_and_variations" data-exclude="<?php echo intval( $post->ID ); ?>">
<?php
$product_ids = get_post_meta( $post->ID, '_upsizing_products_ids', true );
foreach ( $product_ids as $product_id ) {
$product = wc_get_product( $product_id );
if ( is_object( $product ) ) {
echo '<option value="' . esc_attr( $product_id ) . '"' . selected( true, true, false ) . '>' . wp_kses_post( $product->get_formatted_name() ) . '</option>';
}
}
?>
</select> <?php echo wc_help_tip( __( 'Select Products Here.', 'woocommerce' ) ); ?>
</p>
<?php
}
// Function the save the custom fields
function woocom_linked_products_data_custom_field_save( $post_id ){
$product_field_type = $_POST['upsizing_products'];
update_post_meta( $post_id, '_upsizing_products_ids', $product_field_type );
}
하려면 , 「」를 사용합니다._upsizing_products_ids
:
echo get_post_meta( $post->ID, 'my-field-slug', true );
WooCommerce용 커스텀필드에 대한 자세한 내용은 이 가이드에서 Mastering WooCommerce 제품 커스텀필드를 참조하십시오.
언급URL : https://stackoverflow.com/questions/45199599/how-to-add-more-custom-field-in-linked-product-of-woocommerce
'source' 카테고리의 다른 글
관리 링크에 404 WordPress가 표시됨 (0) | 2023.02.28 |
---|---|
setState 메서드를 호출하면 상태가 즉시 변환되지 않는 이유는 무엇입니까? (0) | 2023.02.28 |
리액트 라우터의 hashHistory와 browserHistory의 차이점은 무엇입니까? (0) | 2023.02.28 |
왼쪽 조인에서 조인된 행 수를 카운트하는 중 (0) | 2023.02.23 |
Spring Boot에서 다양한 데이터베이스 구성을 제공하려면 어떻게 해야 합니까? (0) | 2023.02.23 |