Woo recent products minus kategorija

Pokušavam na nekoj stranici koja ima modul od WP bakery WOO recent products, složiti da taj loop prikaže sve kako je minus jedna kategorija. To samo na naslovnoj.

Pokušavam sa:

add_action( ‘pre_get_posts’, 'makniKategoriju );
function makniKategoriju ( $query ) {
if( is_page( ‘Naslovna’ )){

... e sada kako da izmijenim querry recimo da želim maknuti prema idu jednu kategoriju
    
}		

}

Probao sam raznorazne neke skripte, no nula bodova.

Vidi dokumentaciju: WP_Query | Class | WordPress Developer Resources

$query = new WP_Query( array( 'category__not_in' => array( 2, 6 ) ) );

Probaj u pre_get_posts ovo $query->set( 'category__not_in', array( 2, 3, 4 ) );

Ustvari sad vidim da se tu radi o proizvodima, woo, jel?

Vidi ovdje: pre get posts - Theres a way to use $query->set('tax_query' in pre_get_posts filter? - WordPress Development Stack Exchange

Tako postavi tax query not in: WP_Query | Class | WordPress Developer Resources

function makniKategoriju( $query ) {
    if(!is_admin()){
       $taxquery = array(
        array(
            'taxonomy' => 'product_cat',
            'field' => 'term_id',
            'terms' => array( 1450 ),
            'operator'=> 'IN'
        )
    );
    $query->set( 'tax_query', $taxquery );
    }
}
add_action( 'pre_get_posts', 'makniKategoriju' );
...

Ovo recimo je nešto što sada imam, no random radi. Ne znam kako da ciljam baš određeni loop na stranici, jer nestane mi cijeli meni glavni, očito prvi querry.
Te dolje na ostalima ne napravi ništa.

Ako koristim NOT IN onda raspad sistema. Ne znam više možda da krenem s neke druge strane na ovo.

To je modul od WP Bakery Woo Recent products.

Njemu trebam filtirati samo jednu kategoriju da ne prikazuje.

Kao da mi modificira sce querry na stranici.

Ovo radi dobro sa NOT IN
Ali u backendu kda gledam proizvode.

NO - u front endu mi utjeće na prvi querry a to je meni.

Kako da ciljam točno određeni*?Tipa da li je moguće ciljati prema IDju elementa, ili nešto?

Ne znam kako da pronađem taj querry koji trebam i ciljam njega samo jer očito ovo radi. Filtrira sve osim određene kategorije.

CHAT GPT kaze:

Da biste uklonili određenu kategoriju iz upita, možete koristiti tax_query argument u pre_get_posts action. Tax_query argument služi za filtriranje po taxonomiji (u ovom slučaju kategoriji).

Npr.

add_action( ‘pre_get_posts’, ‘makniKategoriju’ );
function makniKategoriju( $query ) {
if( is_page( ‘Naslovna’ ) && $query->is_main_query() ) {
$tax_query = array(
array(
‘taxonomy’ => ‘product_cat’,
‘field’ => ‘term_id’,
‘terms’ => array( 2 ), // kategorija ID
‘operator’ => ‘NOT IN’,
),
);
$query->set( ‘tax_query’, $tax_query );
}
}

Ovaj kod će isključiti kategoriju sa ID-jem 2 iz upita na naslovnoj stranici.

Aha sad vidim da si i ti dosao do istog koda.
Mozda mozes doci do querija sa query monitorom?

Da, ali u fronednu, variabla querry je više puta , očito.
Pa prvo mi hvata menikoji se očito poziva iz teme sa queeryem određene taxonomije tipa:

nav_menu

ili nešto.

Pokušavam sada dohvatiti taj koji već ima taxonomiju “product_cat”.

Ne mogu da nadjem taj plugin/widget? Mozes li na osnovu njega napraviti identican minus data kategorija, bez da pises funkciju?


To je od WP bakery ali na novoj verziji nema koliko vidim.

I sada pokušavam naći gdje je ta funkcija, unutar teme, wp bakery, ili koristi woo.

ma nikako da nađem gdje je ta funckija, da li je woo loop, tema, plugin…
Sada me samo zanima kako da ciljam samo dotični modul, ili taj loop ali eto nemam reference.

Možda da tražim gdje se već šalje upit za proizvode samo.
Samo ne znam kao bi postavio taj if.

Da, što god napravim, cilja mi po redu kakav god query ima na stranici.
Mogu selektirati samo na naslovnon, u frontendu, itd.

Ali nikako da skužim kako da ciljam specifičnu funckiju koja generira taj query za modul RECENT products.

Napravio bi ga iznova, kao shortcode, ali taj WP bakery mi život uzima, kad je od 150 kockica sastavljen.

A ako ručno skroz složim biti će radi gluposti xy sati posla.

Ja bih to zaprzio kao funkciju u function.php izvukao shortcode za i ubacio ga gdje mi treba. Dodao klase i podesio css.

Sa tim da nikad nisam radio sa WP Bakery pa mogu samo nagadjati.

I nemoj, od svih mi je najgori. Ima zgodnu opciju dodavanja na module dodatne parametre, no da to upogoniš, moram imati PHP/JS u malom prstu. Pa sam odustao od tog dijela.

Budem ručno, vjerojatno kao short pa nek se…:slight_smile:

Upitao sam chat GPT-a i veli da ne moramo pisati shortcode. Sa tim da mislim da prva varijanta mora drugacije biti slozena.

add_action( 'pre_get_posts', 'makniKategoriju' );
function makniKategoriju( $query ) {
    if( is_page( ‘Naslovna’ ) && $query->is_main_query() && !$query->is_nav_menu_item() ) {
        $tax_query = array(
            array(
                'taxonomy' => 'product_cat',
                'field' => 'term_id',
                'terms' => array( 2 ), // kategorija ID
                'operator' => 'NOT IN',
            ),
        );
        $query->set( 'tax_query', $tax_query );
    }
}

i ovo drugo rjesenje

add_action( 'woocommerce_product_query', 'makniKategoriju' );
function makniKategoriju( $query ) {
    if( is_page( ‘Naslovna’ ) ) {
        $tax_query = array(
            array(
                'taxonomy' => 'product_cat',
                'field' => 'term_id',
                'terms' => array( 2 ), // kategorija ID
                'operator' => 'NOT IN',
            ),
        );
        $query->set( 'tax_query', $tax_query );
    }
}

Ovo što ti je @Hellas napisao bi trebalo bit dobro. Ono category not in, to je za default kategorije, a kategorija proizvoda je drugo, custom taxonomy.

Složio ručno, no ovo sa nav možda bi radio jer na stranici ima nekoliko očito querya na naslovnoj pa bi ih sve morao filtirati.

Kako god ručno najbolje:) ali eto naučio nešto.

A nisi probao ovu drugu varijantu sa woocommerce product query akcijom?