// SOFA-SETS SIRALAMASI
add_action('pre_get_posts', 'custom_sort_sofa_sets_by_subcategory');
function custom_sort_sofa_sets_by_subcategory($query) {
// Yönetici paneli sorgularını veya WooCommerce dışındaki sorguları etkileme
if (is_admin() || !$query->is_main_query() || !is_product_category('sofa-sets')) {
return;
}
// Alt kategorilerin slug'ları
$priority_categories = array(
'corner-sets', // 1.
'luxury-classic-sofa-set', // 2.
'office-sofa-sets', // 3.
'outdoor-horeca-lounge-set', // 4.
);
// Öncelikli ürünlerin ID'lerini çekmek için bir dizi oluştur
$priority_product_ids = array();
foreach ($priority_categories as $category_slug) {
$category = get_term_by('slug', $category_slug, 'product_cat');
if ($category) {
// Alt kategorideki ürünlerin ID'lerini al
$products = get_posts(array(
'post_type' => 'product',
'posts_per_page' => -1,
'fields' => 'ids',
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => $category->term_id,
)
)
));
$priority_product_ids = array_merge($priority_product_ids, $products);
}
}
// "sofa-sets" ana kategorisindeki ürünleri al
$sofa_sets_parent_products_ids = get_posts(array(
'post_type' => 'product',
'posts_per_page' => -1,
'fields' => 'ids',
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => get_term_by('slug', 'sofa-sets', 'product_cat')->term_id, // Ana kategori "sofa-sets"
'operator' => 'IN', // Ana kategorideki ürünleri almak için
)
)
));
// Tüm ürünlerin ID'lerini birleştiriyoruz
$all_product_ids = array_merge($priority_product_ids, $sofa_sets_parent_products_ids);
// Sıralamayı yap
if (!empty($all_product_ids)) {
$query->set('orderby', 'post__in');
$query->set('post__in', array_unique($all_product_ids));
}
}Hali hazırda şöyle bir kodum var // Alt kategorilerin slug'ları
$priority_categories = array(
'corner-sets', // 1.
'luxury-classic-sofa-set', // 2.
'office-sofa-sets', // 3.
'outdoor-horeca-lounge-set', // 4.
);alt kategorileri bu şekilde sıralıyorum bir problem yok fakat bu sistem ana kategorinin alt kategorilerindeki olan ürünleri sıralıyorbenim istediğim farklı ana kategorideki bazı ürünleri de sofa-sets kategorisinde örneğin 2 ci sıraya almak
bunun farklı yollardan nasıl yaparız örneğin bazı ürünlere tag eklesem tagdaki ürünleri sıralamaya ekleyebilir miyim?
birde ürün mutlaka ana kategoride seçili mi olması gerekiyor
teşekkürler