Как добавить пользовательские поля в категорию продуктов? Я добавил пользовательское поле к продукту, но я не могу найти какое-либо расширение, которое обеспечит возможность добавления настраиваемого поля в категорию продукта.
Пожалуйста помоги
PLZ использовать это
http://tutorialshares.com/taxonomy-custom-meta-fields/
вы можете изменить его как свою потребность
Вы можете добавить пользовательские поля в категорию продуктов WooCommerce, используя следующие действия:
ОБНОВЛЕНО 17 февраля 2017 года
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);
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'];
Этот код находится в файле function.php вашей активной дочерней темы (или темы), а также в любом файле плагина.
Весь код проверен и полностью работоспособен.
Справка:
Начиная WordPress 4.4, вы должны рассмотреть возможность обновления Woocommerce или начать вручную загружать новую таблицу wp_termmeta.