• 06-12-2024, 10:55:54
    #1
    Dostlar selamlar wordpresste ana kategorilerin ürün sıralaması düzenlemesini yapmaya çalısıyorum

    // 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ıyor


    benim 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
  • Kabul Edilen Cevap
    • Üst sırada gözükmesini istediğin ürünlere, tag ekleyip css ile order vererek rahatça yapabilirsin.
  • 06-12-2024, 10:59:25
    #2
    Bu cevap, konu sahibi tarafından kabul edilebilir bir cevap olarak işaretlendi.
    Üst sırada gözükmesini istediğin ürünlere, tag ekleyip css ile order vererek rahatça yapabilirsin.
  • 06-12-2024, 11:03:10
    #3
    barisdogansutcu adlı üyeden alıntı: mesajı görüntüle
    Üst sırada gözükmesini istediğin ürünlere, tag ekleyip css ile order vererek rahatça yapabilirsin.
    teşekkürler hocam çözdüm
  • 06-12-2024, 11:16:10
    #4
    .productTag_sofanew{order:-1;}

    doğru class ismi için html den bakman lazım.