WP_Query per Nome Categoria

11 set 2014, 18:55:32
Visualizzazioni: 66.2K
Voti: 4

Ciao, sto utilizzando del codice per visualizzare i post in uno slider su una pagina e nella parte superiore ho del codice per filtrarli usando WP_Query. Ecco il codice, non sono sicuro di cosa non funzioni:

<?php
/**
 * Contenuti in Evidenza 2
 *
 */

$args = array(
    'post_type' => 'iv_post_type',
    'category'    => 'commitment',
);
$loop = new WP_Query( $args );      
if ( $loop->have_posts() ) : ?>

    <div id="video-sidebar-right">

        <div class="featured-current-wrapper">

            <div id="featured-content">     

                <?php while ( $loop->have_posts() ) : $loop->the_post(); ?>

                        <div class="featured-post">
                            <?php if(has_post_thumbnail()) :?>
                                <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail( 'bcc-video-medium' ); ?></a>
                                <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                                <?php the_excerpt(); ?> 
                            <?php else :?>

                            <?php endif;?>

                        </div> <!-- .featured-post -->

                        <div class="featured-post-pager">
                            <span id="slider-prev" class="slider-nav">&larr; Foto Successiva</span>
                            <span id="slider-next" class="slider-nav">&rarr; Foto Precedente</span>
                        </div>

                <?php endwhile; ?>


            </div><!-- #featured-content -->
        </div><!-- .featured-current-wrapper -->
    </div><!-- #video-sidebar-right -->

    <div id="video-featured-content">

        <div class="featured-video">
            <div class="videoWrapper">
                <iframe width="640" height="360" src="//www.youtube.com/embed/so_PO0dP3oA" frameborder="0" allowfullscreen></iframe>
            </div>
        </div>

        <?php wp_nav_menu( array( 'theme_location' => 'bcc-video-menu' ) ); ?>

        <p class="video-choose-cat">Scegli una categoria dall'elenco sopra per visualizzare i nostri diversi articoli.</p>

        <div id="slider-nav">

            <div id="slide-thumbs">

                <?php $slidecount = 1;

                while ( $loop->have_posts() ) : $loop->the_post(); ?>

                    <div class="slide-thumbs-single <?php echo ( $slidecount == -1 ) ? 'last' : ''; ?>">
                        <?php if(has_post_thumbnail()) :?>
                            <?php the_post_thumbnail( 'bcc-video-thumb' ); ?>
                        <?php else :?>

                        <?php endif;?>
                    </div>

                    <?php $slidecount++; ?>

                <?php endwhile; ?>

            </div><!-- .slide-thumbs -->
        </div><!-- #slider-nav -->
    </div><!-- #video-featured-content -->


<?php endif; ?>
3
Commenti

Benvenuto su [wordpress.se]. Qual è la tua domanda?

birgire birgire
11 set 2014 18:59:28

Ciao! Tutti i post di quel tipo di contenuto vengono visualizzati nella pagina. Vorrei che fossero mostrati solo quelli di una categoria specifica. È possibile? Non sono sicuro di cosa non vada nei miei $args...anche se cambio category in category_name non viene visualizzato più nulla...

user6311172 user6311172
11 set 2014 19:04:24

Per favore, aggiorna la tua domanda con queste informazioni.

birgire birgire
11 set 2014 19:25:44
Tutte le risposte alla domanda 2
1
13

category è un parametro valido per get_posts, ma non per WP_Query. Ecco i parametri validi per le categorie in WP_Query:

  • cat (int) - utilizza l'ID della categoria.
  • category_name (string) - utilizza lo slug della categoria (NON il nome).
  • category__and (array) - utilizza l'ID della categoria.
  • category__in (array) - utilizza l'ID della categoria.
  • category__not_in (array) - utilizza l'ID della categoria.

Puoi utilizzare sia cat che category_name.

Se non sei sicuro di un parametro, puoi fare un var_dump() della tua variabile new WP_Query. Nel tuo caso, fai così:

?><pre><?php var_dump($loop); ?></pre><?php

Questo mostrerà qualcosa del genere:

object(WP_Query)#197 (49) {
  ["query"]=>
  array(2) {
    ["page"]=>
    string(0) ""
    ["pagename"]=>
    string(7) "profile"
  }
  ["query_vars"]=>
  array(62) {
    ["page"]=>
    int(0)
    ["pagename"]=>
    string(7) "profile"
    ["error"]=>
    string(0) ""
    ["m"]=>
    string(0) ""
    ["p"]=>
    int(0)
    ["post_parent"]=>
    string(0) ""
    ["subpost"]=>
    string(0) ""
    ["subpost_id"]=>
    string(0) ""
    ["attachment"]=>
    string(0) ""
    ["attachment_id"]=>
    int(0)
    ["name"]=>
    string(7) "profile"
    ["static"]=>
    string(0) ""
    ["page_id"]=>
    int(0)
    ["second"]=>
    string(0) ""
    ["minute"]=>
    string(0) ""
    ["hour"]=>
    string(0) ""
    ["day"]=>
    int(0)
    ["monthnum"]=>
    int(0)
    ["year"]=>
    int(0)
    ["w"]=>
    int(0)
    ["category_name"]=>
    string(0) ""
    ["tag"]=>
    string(0) ""
    ["cat"]=>
    string(0) ""
    ["tag_id"]=>
    string(0) ""
    ["author"]=>
    string(0) ""
    ["author_name"]=>
    string(0) ""
    ["feed"]=>
    string(0) ""
    ["tb"]=>
    string(0) ""
    ["paged"]=>
    int(0)
    ["comments_popup"]=>
    string(0) ""
    ["meta_key"]=>
    string(0) ""
    ["meta_value"]=>
    string(0) ""
    ["preview"]=>
    string(0) ""
    ["s"]=>
    string(0) ""
    ["sentence"]=>
    string(0) ""
    ["fields"]=>
    string(0) ""
    ["menu_order"]=>
    string(0) ""
    ["category__in"]=>
    array(0) {
    }
    ["category__not_in"]=>
    array(0) {
    }
    ["category__and"]=>
    array(0) {
    }
    ["post__in"]=>
    array(0) {
    }
    ["post__not_in"]=>
    array(0) {
    }
    ["tag__in"]=>
    array(0) {
    }
    ["tag__not_in"]=>
    array(0) {
    }
    ["tag__and"]=>
    array(0) {
    }
    ["tag_slug__in"]=>
    array(0) {
    }
    ["tag_slug__and"]=>
    array(0) {
    }
    ["post_parent__in"]=>
    array(0) {
    }
    ["post_parent__not_in"]=>
    array(0) {
    }
    ["author__in"]=>
    array(0) {
    }
    ["author__not_in"]=>
    array(0) {
    }
    ["ignore_sticky_posts"]=>
    bool(false)
    ["suppress_filters"]=>
    bool(false)
    ["cache_results"]=>
    bool(true)
    ["update_post_term_cache"]=>
    bool(true)
    ["update_post_meta_cache"]=>
    bool(true)
    ["post_type"]=>
    string(0) ""
    ["posts_per_page"]=>
    int(6)
    ["nopaging"]=>
    bool(false)
    ["comments_per_page"]=>
    string(2) "20"
    ["no_found_rows"]=>
    bool(false)
    ["order"]=>
    string(4) "DESC"
  }
  ["tax_query"]=>
  NULL
  ["meta_query"]=>
  object(WP_Meta_Query)#211 (2) {
    ["queries"]=>
    array(0) {
    }
    ["relation"]=>
    NULL
  }
  ["date_query"]=>
  bool(false)
  ["queried_object"]=>
  object(WP_Post)#236 (24) {
    ["ID"]=>
    int(265)
    ["post_author"]=>
    string(1) "1"
    ["post_date"]=>
    string(19) "2014-04-21 14:48:59"
    ["post_date_gmt"]=>
    string(19) "2014-04-21 12:48:59"
    ["post_content"]=>
    string(0) ""
    ["post_title"]=>
    string(4) "Test"
    ["post_excerpt"]=>
    string(0) ""
    ["post_status"]=>
    string(7) "publish"
    ["comment_status"]=>
    string(4) "open"
    ["ping_status"]=>
    string(4) "open"
    ["post_password"]=>
    string(0) ""
    ["post_name"]=>
    string(7) "profile"
    ["to_ping"]=>
    string(0) ""
    ["pinged"]=>
    string(0) ""
    ["post_modified"]=>
    string(19) "2014-09-10 19:54:58"
    ["post_modified_gmt"]=>
    string(19) "2014-09-10 17:54:58"
    ["post_content_filtered"]=>
    string(0) ""
    ["post_parent"]=>
    int(0)
    ["guid"]=>
    string(39) "http://localhost/wordpress/?page_id=265"
    ["menu_order"]=>
    int(0)
    ["post_type"]=>
    string(4) "page"
    ["post_mime_type"]=>
    string(0) ""
    ["comment_count"]=>
    string(1) "0"
    ["filter"]=>
    string(3) "raw"
  }
  ["queried_object_id"]=>
  int(265)
  ["request"]=>
  string(138) "SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND (wp_posts.ID = '265') AND wp_posts.post_type = 'page'  ORDER BY wp_posts.post_date DESC "
  ["posts"]=>
  &array(1) {
    [0]=>
    object(WP_Post)#212 (24) {
      ["ID"]=>
      int(265)
      ["post_author"]=>
      string(1) "1"
      ["post_date"]=>
      string(19) "2014-04-21 14:48:59"
      ["post_date_gmt"]=>
      string(19) "2014-04-21 12:48:59"
      ["post_content"]=>
      string(0) ""
      ["post_title"]=>
      string(4) "Test"
      ["post_excerpt"]=>
      string(0) ""
      ["post_status"]=>
      string(7) "publish"
      ["comment_status"]=>
      string(4) "open"
      ["ping_status"]=>
      string(4) "open"
      ["post_password"]=>
      string(0) ""
      ["post_name"]=>
      string(7) "profile"
      ["to_ping"]=>
      string(0) ""
      ["pinged"]=>
      string(0) ""
      ["post_modified"]=>
      string(19) "2014-09-10 19:54:58"
      ["post_modified_gmt"]=>
      string(19) "2014-09-10 17:54:58"
      ["post_content_filtered"]=>
      string(0) ""
      ["post_parent"]=>
      int(0)
      ["guid"]=>
      string(39) "http://localhost/wordpress/?page_id=265"
      ["menu_order"]=>
      int(0)
      ["post_type"]=>
      string(4) "page"
      ["post_mime_type"]=>
      string(0) ""
      ["comment_count"]=>
      string(1) "0"
      ["filter"]=>
      string(3) "raw"
    }
  }
  ["post_count"]=>
  int(1)
  ["current_post"]=>
  int(-1)
  ["in_the_loop"]=>
  bool(false)
  ["post"]=>
  object(WP_Post)#212 (24) {
    ["ID"]=>
    int(265)
    ["post_author"]=>
    string(1) "1"
    ["post_date"]=>
    string(19) "2014-04-21 14:48:59"
    ["post_date_gmt"]=>
    string(19) "2014-04-21 12:48:59"
    ["post_content"]=>
    string(0) ""
    ["post_title"]=>
    string(4) "Test"
    ["post_excerpt"]=>
    string(0) ""
    ["post_status"]=>
    string(7) "publish"
    ["comment_status"]=>
    string(4) "open"
    ["ping_status"]=>
    string(4) "open"
    ["post_password"]=>
    string(0) ""
    ["post_name"]=>
    string(7) "profile"
    ["to_ping"]=>
    string(0) ""
    ["pinged"]=>
    string(0) ""
    ["post_modified"]=>
    string(19) "2014-09-10 19:54:58"
    ["post_modified_gmt"]=>
    string(19) "2014-09-10 17:54:58"
    ["post_content_filtered"]=>
    string(0) ""
    ["post_parent"]=>
    int(0)
    ["guid"]=>
    string(39) "http://localhost/wordpress/?page_id=265"
    ["menu_order"]=>
    int(0)
    ["post_type"]=>
    string(4) "page"
    ["post_mime_type"]=>
    string(0) ""
    ["comment_count"]=>
    string(1) "0"
    ["filter"]=>
    string(3) "raw"
  }
  ["comment_count"]=>
  int(0)
  ["current_comment"]=>
  int(-1)
  ["found_posts"]=>
  int(1)
  ["max_num_pages"]=>
  int(0)
  ["max_num_comment_pages"]=>
  int(0)
  ["is_single"]=>
  bool(false)
  ["is_preview"]=>
  bool(false)
  ["is_page"]=>
  bool(true)
  ["is_archive"]=>
  bool(false)
  ["is_date"]=>
  bool(false)
  ["is_year"]=>
  bool(false)
  ["is_month"]=>
  bool(false)
  ["is_day"]=>
  bool(false)
  ["is_time"]=>
  bool(false)
  ["is_author"]=>
  bool(false)
  ["is_category"]=>
  bool(false)
  ["is_tag"]=>
  bool(false)
  ["is_tax"]=>
  bool(false)
  ["is_search"]=>
  bool(false)
  ["is_feed"]=>
  bool(false)
  ["is_comment_feed"]=>
  bool(false)
  ["is_trackback"]=>
  bool(false)
  ["is_home"]=>
  bool(false)
  ["is_404"]=>
  bool(false)
  ["is_comments_popup"]=>
  bool(false)
  ["is_paged"]=>
  bool(false)
  ["is_admin"]=>
  bool(false)
  ["is_attachment"]=>
  bool(false)
  ["is_singular"]=>
  bool(true)
  ["is_robots"]=>
  bool(false)
  ["is_posts_page"]=>
  bool(false)
  ["is_post_type_archive"]=>
  bool(false)
  ["query_vars_hash":"WP_Query":private]=>
  string(32) "7d1c96f43296ed3cb0cd8c4716b9b916"
  ["query_vars_changed":"WP_Query":private]=>
  bool(false)
  ["thumbnails_cached"]=>
  bool(false)
  ["stopwords":"WP_Query":private]=>
  NULL
}

MODIFICA

Un'altra cosa da verificare è se stai utilizzando tassonomie personalizzate o categorie predefinite. È importante sapere la differenza perché le tassonomie personalizzate non utilizzano i parametri delle categorie, ma tax_query. Se non sei sicuro, leggi la mia risposta su questo argomento qui.

Se stai utilizzando una tassonomia personalizzata, dovresti rimuovere il parametro category e sostituirlo con tax_query.

Esempio:

'tax_query' => array(
        array(
            'taxonomy' => 'NOME DELLA TUA TASSONOMIA',
            'field'    => 'slug',
            'terms'    => 'SLUG DEL TUO TERMINE',
        ),
    ),
11 set 2014 19:16:36
Commenti

supponi di avere il nome della categoria e non l'ID della categoria, come si ottiene l'ID della categoria dal nome

Karue Benson Karue Karue Benson Karue
2 dic 2021 05:16:09
0

prova questo

$anArray = array(
    'tax_query' => array(
        array(
            'taxonomy' => 'LA TUA TASSONOMIA PERSONALIZZATA', // Sostituisci con il nome della tua tassonomia personalizzata
            'terms'    => 'ID DELLA CATEGORIA', // Inserisci l'ID della categoria
        ),
    ),
);

puoi trovare i valori nella tabella wp_term_taxonomy del tuo database.

10 feb 2022 17:12:46