2 dropdown-uri, primul cu toate post-typeurile si al 2 lea cu toate taxonomies

Salut, este primul meu post aici, sper sa fi cautat bine si sa nu existe un subiect la fel si sa-l fi omis.
Am o pagina in care sunt afisate mai multe post type-uri + categorie specifica, am facut 2 dropdown-uri : unu e cu toate post-type-urile si altu cu taxonomies, acum trebuie sa fac functionalitatea ca atunci când selectez un post type si o categorie, in acea pagina sa mi le afiseze, nu reusesc sub nicio forma, tot ce am reusit este sa imi ia id-ul postului si sa il pune in link, am facut asta cu : change(function() si window.location.href.
Orice sfat/sugestie mi-ar fi de folos. Multumesc !

Bine ai venit pe forum :slight_smile:

Poți da mai multe detalii? De exemplu, taxonomiile sunt atașate unui singur post type? Dacă da, poți pune în dropwdown url-ul arhivei pentru fiecare term (atenție: taxonomiile în sine NU au arhivă)

Poți pune și cod, să vedem ce ai făcut până acum?

Bine v-am gasit si merci pentru raspuns :smiley: !
Pentru toate post-typeurile am o singura taxonomie.
Din pacate,foarte mult nu am facut, cu jQuery am facut asta :

$( function  () {
  $( ' #cat' ).change(function() {
     window.location.href = 'http://www.example.com'  + $(this).val(); 
     //am citit ca se poate si cu window.location.href = param, dar mie nu imi merge
  });
});

iar cele 2 dropdown-uri le-am facut asa :

  1. pentru taxonomy :
<?php
 $args = array(
    'taxonomy'        => 'categories',
    'post_type'       => array( 'ebooks', 'webinars', 'infographics', 'whitepapers', 'casestudies' ),
    'class'           => 'form-control form-control-sm col-lg-2 pt-0 pb-0 mr-4',
    'show_option_all' => 'Topic',
    'echo'            => true
);
wp_dropdown_categories( $args );
  1. pentru post-typeuri :
<?php 
$args=array(
    'public'   => true,
    '_builtin' => false,
); 

$output = 'names';
$operator = 'and';
$post_types = get_post_types($args,$output,$operator); 
echo '<select name="custom-post" class="form-control form-control-sm col-lg-2 pt-0 pb-0" id="post-type">';
    foreach ($post_types  as $post_type ) {
        echo '<option value="'.$post_type.'">' . $post_type . '</option>';
    }
echo '</select>';

Multumesc!

Eu aș face lucrurile în felul următor:

  1. Aș trimite prin $_GET selecția curentă (post type & taxonomy)
  2. Aș altera query-ul curent folosind hook-ul pre_get_posts (vezi aici exemplu; NU folosi funcția get_posts, îți face mai multe probleme decât rezolvă).

De exemplu, să zicem că ai selectul ăsta pe pagina /resurse. Schimbarea unei opțiuni va face redirect spre /resurse?type=ebooks&cat=fizica.

În funcție de parametri, adaugi loop-ul (cred că trebuie să-l pui în functions.php; în template cred că e prea târziu):

add_action( 'pre_get_posts', function($query) {
    if ( $query->is_main_query() ) {
        if( isset( $_GET['type'] ) ){
            $query->set( 'post_type', sanitize_text_field( $_GET['type'] ) );
        }
        // tax_query & co
    }
} );

Multumesc pentru sfaturi, sper sa rezolv!