제품 카테고리에 사용자 정의 필드 추가
제품 카테고리에 커스텀필드를 추가하려면 어떻게 해야 하나요?제품에 커스텀 필드를 추가했지만 제품 카테고리에 커스텀 필드를 추가하는 기능을 제공하는 확장을 찾을 수 없습니다.
다음 액션을 사용하여 WooCommerce 제품 카테고리에 커스텀필드를 추가할 수 있습니다.
- product_cat_add_form_fields
- product_cat_edit_form_fields
- edited_product_cat
- create_product_cat
2017년 2월 17일 갱신 ##WP 버전용4.4
이상입니다.
WordPress 4.4에서는update_term_meta()
그리고.get_term_meta()
기능이 추가되었습니다.즉, 데이터를 저장할 필요가 없습니다.wp_options
테이블은 더 이상 저장되지 않습니다.wp_termmeta
테이블.
업데이트 된 코드입니다.
//Product Cat Create page
function wh_taxonomy_add_new_meta_field() {
?>
<div class="form-field">
<label for="wh_meta_title"><?php _e('Meta Title', 'wh'); ?></label>
<input type="text" name="wh_meta_title" id="wh_meta_title">
<p class="description"><?php _e('Enter a meta title, <= 60 character', 'wh'); ?></p>
</div>
<div class="form-field">
<label for="wh_meta_desc"><?php _e('Meta Description', 'wh'); ?></label>
<textarea name="wh_meta_desc" id="wh_meta_desc"></textarea>
<p class="description"><?php _e('Enter a meta description, <= 160 character', 'wh'); ?></p>
</div>
<?php
}
//Product Cat Edit page
function wh_taxonomy_edit_meta_field($term) {
//getting term ID
$term_id = $term->term_id;
// retrieve the existing value(s) for this meta field.
$wh_meta_title = get_term_meta($term_id, 'wh_meta_title', true);
$wh_meta_desc = get_term_meta($term_id, 'wh_meta_desc', true);
?>
<tr class="form-field">
<th scope="row" valign="top"><label for="wh_meta_title"><?php _e('Meta Title', 'wh'); ?></label></th>
<td>
<input type="text" name="wh_meta_title" id="wh_meta_title" value="<?php echo esc_attr($wh_meta_title) ? esc_attr($wh_meta_title) : ''; ?>">
<p class="description"><?php _e('Enter a meta title, <= 60 character', 'wh'); ?></p>
</td>
</tr>
<tr class="form-field">
<th scope="row" valign="top"><label for="wh_meta_desc"><?php _e('Meta Description', 'wh'); ?></label></th>
<td>
<textarea name="wh_meta_desc" id="wh_meta_desc"><?php echo esc_attr($wh_meta_desc) ? esc_attr($wh_meta_desc) : ''; ?></textarea>
<p class="description"><?php _e('Enter a meta description', 'wh'); ?></p>
</td>
</tr>
<?php
}
add_action('product_cat_add_form_fields', 'wh_taxonomy_add_new_meta_field', 10, 1);
add_action('product_cat_edit_form_fields', 'wh_taxonomy_edit_meta_field', 10, 1);
// Save extra taxonomy fields callback function.
function wh_save_taxonomy_custom_meta($term_id) {
$wh_meta_title = filter_input(INPUT_POST, 'wh_meta_title');
$wh_meta_desc = filter_input(INPUT_POST, 'wh_meta_desc');
update_term_meta($term_id, 'wh_meta_title', $wh_meta_title);
update_term_meta($term_id, 'wh_meta_desc', $wh_meta_desc);
}
add_action('edited_product_cat', 'wh_save_taxonomy_custom_meta', 10, 1);
add_action('create_product_cat', 'wh_save_taxonomy_custom_meta', 10, 1);
용도, 데이터를 검색하려면:
echo $productCatMetaTitle = get_term_meta($term_id, 'wh_meta_title', true);
echo $productCatMetaDesc = get_term_meta($term_id, 'wh_meta_desc', true);
###For WP version below `4.4`.
여기 코드가 있습니다.
//Product Cat creation page
function text_domain_taxonomy_add_new_meta_field() {
?>
<div class="form-field">
<label for="term_meta[wh_meta_title]"><?php _e('Meta Title', 'text_domain'); ?></label>
<input type="text" name="term_meta[wh_meta_title]" id="term_meta[wh_meta_title]">
<p class="description"><?php _e('Enter a meta title, <= 60 character', 'text_domain'); ?></p>
</div>
<div class="form-field">
<label for="term_meta[wh_meta_desc]"><?php _e('Meta Description', 'text_domain'); ?></label>
<textarea name="term_meta[wh_meta_desc]" id="term_meta[wh_meta_desc]"></textarea>
<p class="description"><?php _e('Enter a meta description, <= 160 character', 'text_domain'); ?></p>
</div>
<?php
}
add_action('product_cat_add_form_fields', 'text_domain_taxonomy_add_new_meta_field', 10, 2);
//Product Cat Edit page
function text_domain_taxonomy_edit_meta_field($term) {
//getting term ID
$term_id = $term->term_id;
// retrieve the existing value(s) for this meta field. This returns an array
$term_meta = get_option("taxonomy_" . $term_id);
?>
<tr class="form-field">
<th scope="row" valign="top"><label for="term_meta[wh_meta_title]"><?php _e('Meta Title', 'text_domain'); ?></label></th>
<td>
<input type="text" name="term_meta[wh_meta_title]" id="term_meta[wh_meta_title]" value="<?php echo esc_attr($term_meta['wh_meta_title']) ? esc_attr($term_meta['wh_meta_title']) : ''; ?>">
<p class="description"><?php _e('Enter a meta title, <= 60 character', 'text_domain'); ?></p>
</td>
</tr>
<tr class="form-field">
<th scope="row" valign="top"><label for="term_meta[wh_meta_desc]"><?php _e('Meta Description', 'text_domain'); ?></label></th>
<td>
<textarea name="term_meta[wh_meta_desc]" id="term_meta[wh_meta_desc]"><?php echo esc_attr($term_meta['wh_meta_desc']) ? esc_attr($term_meta['wh_meta_title']) : ''; ?></textarea>
<p class="description"><?php _e('Enter a meta description', 'text_domain'); ?></p>
</td>
</tr>
<?php
}
add_action('product_cat_edit_form_fields', 'text_domain_taxonomy_edit_meta_field', 10, 2);
// Save extra taxonomy fields callback function.
function save_taxonomy_custom_meta($term_id) {
if (isset($_POST['term_meta'])) {
$term_meta = get_option("taxonomy_" . $term_id);
$cat_keys = array_keys($_POST['term_meta']);
foreach ($cat_keys as $key) {
if (isset($_POST['term_meta'][$key])) {
$term_meta[$key] = $_POST['term_meta'][$key];
}
}
// Save the option array.
update_option("taxonomy_" . $term_id, $term_meta);
}
}
add_action('edited_product_cat', 'save_taxonomy_custom_meta', 10, 2);
add_action('create_product_cat', 'save_taxonomy_custom_meta', 10, 2);
용도, 데이터를 검색하려면:
$metaArray = get_option('taxonomy_' . $term_id);
echo $productCatMetaTitle = $metaArray['wh_meta_title'];
echo $productCatMetaDesc = $metaArray['wh_meta_desc'];
이 코드는 기능합니다.php 파일 또는 임의의 플러그인 파일에 있는 활성 자식 테마(또는 테마)입니다.
모든 코드가 테스트되어 정상적으로 기능하고 있다.
언급
공식 문서:
Wordpress 4.4에서 Woocommerce 업그레이드를 기다리거나 새로운 wp_termeta 테이블을 수동으로 공급하는 것을 고려해야 합니다.
https://core.trac.wordpress.org/ticket/10142
WP 버전 4.4 이상의 코드에 문제가 있습니다.
카테고리 리스트의 admin 페이지에서 임의의 것(url slug 또는 이름)을 변경하면 커스텀필드 값이 빈 문자열로 변경됩니다.
카테고리 편집 관리 페이지에서 실행되지 않는 편집 저장 기능을 추가했습니다.
// Save extra taxonomy fields callback function - create.
function wh_save_taxonomy_custom_meta_create($term_id) {
$wh_meta_title = filter_input(INPUT_POST, 'wh_meta_title');
$wh_meta_desc = filter_input(INPUT_POST, 'wh_meta_desc');
update_term_meta($term_id, 'wh_meta_title', $wh_meta_title);
update_term_meta($term_id, 'wh_meta_desc', $wh_meta_desc);
}
// Save extra taxonomy fields callback function - edit.
function wh_save_taxonomy_custom_meta($term_id) {
$screen = get_current_screen();
if ( $screen->id != 'edit-product_cat' )
return; // exit if incorrect screen id
$wh_meta_title = filter_input(INPUT_POST, 'wh_meta_title');
$wh_meta_desc = filter_input(INPUT_POST, 'wh_meta_desc');
update_term_meta($term_id, 'wh_meta_title', $wh_meta_title);
update_term_meta($term_id, 'wh_meta_desc', $wh_meta_desc);
}
add_action('edited_product_cat', 'wh_save_taxonomy_custom_meta', 10, 1);
add_action('create_product_cat', 'wh_save_taxonomy_custom_meta_create', 10, 1);
언급URL : https://stackoverflow.com/questions/23469841/adding-custom-field-to-product-category
'programing' 카테고리의 다른 글
ng-max-length가 내 모델을 나사로 고정합니다. (0) | 2023.03.21 |
---|---|
기능을 통해 자동으로 새 사용자를 생성합니다.WordPress의 php (0) | 2023.03.16 |
Mockito와 함께 봄의 자동 전원 @Value 필드를 조롱하려면 어떻게 해야 하나요? (0) | 2023.03.16 |
JsonConvert 사용.Deserialize Object를 사용하여 Json을 C# POCO 클래스로 역직렬화합니다. (0) | 2023.03.16 |
1면 Wordpress의 ID 가져오기 (0) | 2023.03.16 |