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
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 !
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 :
- 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 );
- 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:
- Aș trimite prin
$_GET
selecția curentă (post type & taxonomy) - Aș altera query-ul curent folosind hook-ul
pre_get_posts
(vezi aici exemplu; NU folosi funcțiaget_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!