При варианте вывода в категориях товаров, в не зависимости есть ли подкатегории или нет, для более точного подбора товаров можно выводить до товаров подкатегории. При этом сделать это можно довольно вариативно. Например, настроить выводить или нет ту или иную категорию, настроить порядок вывода подкатегорий (отличный от основной сортировки категорий WC), настроить размер блока подкатегории (в 2 раза вире / в 2 раза выше для верстки плиткой).
Выводить ли подкатегорию
Код создания метаполя ON
// Создание метаполя Включить/Отключить категорию
add_action('product_cat_add_form_fields', 'wh_taxonomy_add_work_meta_field', 10, 1);
add_action('product_cat_edit_form_fields', 'wh_taxonomy_edit_meta_field', 10, 1);
// Product Cat Create page
function wh_taxonomy_add_work_meta_field() {
?>
<div class="form-field">
<label for="wh_meta_desc">
<input type="hidden" name="wh_meta_desc" value="">
<input name="wh_meta_desc" type="checkbox" id="wh_meta_desc"> Включить
</label>
</div>
<?php
}
//Product Cat Edit page
function wh_taxonomy_edit_meta_field($term) {
$wh_meta_desc = get_term_meta($term->term_id, 'wh_meta_desc', true);
?>
<tr class="form-field">
<th scope="row" valign="top"><label for="wh_meta_desc">Включить</label></th>
<td>
<label for="wh_meta_desc">
<input type="hidden" name="wh_meta_desc" value="">
<input name="wh_meta_desc" type="checkbox" id="wh_meta_desc" <?php if ($wh_meta_desc == 'on'){ echo 'checked'; }; ?>> Включить
</label>
</td>
</tr>
<?php
}
// Сохранение данных метаполя Включить/Отключить категорию
add_action('edited_product_cat', 'wh_save_taxonomy_custom_meta', 10, 1);
add_action('create_product_cat', 'wh_save_taxonomy_custom_meta', 10, 1);
// Save extra taxonomy fields callback function.
function wh_save_taxonomy_custom_meta($term_id) {
$wh_meta_desc = filter_input(INPUT_POST, 'wh_meta_desc');
update_term_meta($term_id, 'wh_meta_desc', $wh_meta_desc);
}
Порядок вывода подкатегорий (произвольный)
// Создание метаполя Порядок
add_action('product_cat_add_form_fields', 'pippin_taxonomy_add_order_meta_field', 10, 1);
function pippin_taxonomy_add_order_meta_field() {
?>
<div class="form-field">
<label for="order_term_meta">Порядок вывода</label>
<input type="number" name="order_term_meta" id="order_term_meta" value="0">
</div>
<?php
}
// Редактирование метаполя Порядок
add_action('product_cat_edit_form_fields', 'pippin_taxonomy_edit_meta_field', 10, 1);
function pippin_taxonomy_edit_meta_field($term) {
$order_term_meta = get_term_meta( $term->term_id, 'order_term_meta', 1 ); ?>
<tr class="form-field">
<th scope="row" valign="top"><label for="order_term_meta">Порядок вывода</label></th>
<td>
<input type="number" name="order_term_meta" id="order_term_meta" value="<?php if ( !empty($order_term_meta) ) { echo $order_term_meta; } else { echo '0'; } ?>">
</td>
</tr>
<?php
}
// Сохранение метаполя Порядок
add_action('edited_product_cat', 'save_taxonomy_order_meta', 10, 1);
add_action('create_product_cat', 'save_taxonomy_order_meta', 10, 1);
function save_taxonomy_order_meta( $term_id ) {
$order_term_meta = filter_input(INPUT_POST, 'order_term_meta');
update_term_meta($term_id, 'order_term_meta', $order_term_meta);
}
Размер блока подкатегории
Продолжение следует…
[site-socialshare]