Visualizzare articoli di una categoria specifica in una pagina personalizzata?

21 mag 2014, 18:13:56
Visualizzazioni: 90.1K
Voti: 4

Sto cercando di far visualizzare nella mia pagina news solo i contenuti di una categoria specifica (numero 3) ma non riesco a farlo funzionare. Invece di mostrare solo i post della categoria 3, visualizza i post di tutte le categorie.

Ecco il mio codice:

<?php get_header(); ?>

            <div class="content news_page">

                       <h1>Ultime Notizie</h1>     

                       <?php $args = array(
                            'post_type' => 'post' ,
                            'orderby' => 'date' ,
                            'order' => 'DESC' ,
                            'posts_per_page' => 6,
                            'category'         => '3',
                            'paged' => get_query_var('paged'),
                            'post_parent' => $parent
                       ); ?>
                       <?php query_posts($args); ?>




                       <?php if ( have_posts() ) : ?>
                            <?php while ( have_posts() ) : the_post(); ?>

                                <div class="large-4 medium-4 small-12 columns">
                                    <div class="latest_news_cont">
                                    <a href="<?php the_permalink() ?>"><?php the_post_thumbnail(); ?></a>

                                    <a href="<?php the_permalink() ?>"><h5><?php the_title(); ?></h5></a>
                                    <?php the_excerpt(); ?>
                                    <p style="text-align:center;"><a href="<?php the_permalink() ?>" class="readmore_news">Leggi di più</a></p>
<br>
<div class="clear"></div>
                                       </div>
                                    </div>

                            <?php endwhile; ?>
                        <?php endif; ?>


<div class="clear"></div>

            </div><!--fine del contenuto-->



<div class="clear"></div>

<?php get_footer(); ?>
4
Commenti

Esattamente cosa non funziona? Inoltre, per favore non usare query_posts.

s_ha_dum s_ha_dum
21 mag 2014 18:22:58

Ciao, invece di visualizzare i post di una certa categoria, mostra post da tutte le categorie

user3615681 user3615681
21 mag 2014 18:27:55

La tua pagina news è la tua pagina post impostata nelle Impostazioni di lettura?

Brad Dalton Brad Dalton
21 mag 2014 18:52:28

https://wordpress.stackexchange.com/a/290909/133699

Muhammad Bilal Muhammad Bilal
28 mar 2018 17:42:58
Tutte le risposte alla domanda 5
0

Ottieni i Primi Cinque Post con una Categoria Specifica

<?php
        // la query
        $the_query = new WP_Query(array(
            'category_name' => 'nome_categoria_post',
            'post_status' => 'publish',
            'posts_per_page' => 5,
        ));
        ?>

        <?php if ($the_query->have_posts()) : ?>
            <?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
                <?php the_category(); ?>
                <?php the_title(); ?>
                <?php the_excerpt(); ?>
                <?php the_post_thumbnail(); ?>
                <?php the_content(); ?>

            <?php endwhile; ?>
            <?php wp_reset_postdata(); ?>

        <?php else : ?>
            <p><?php __('Nessuna Notizia'); ?></p>
        <?php endif; ?>
12 gen 2018 14:26:03
0

L'argomento non è category, ma cat. La tua query fallisce perché stai utilizzando un argomento che non esiste.

$args = array(
  'post_type' => 'post' ,
  'orderby' => 'date' ,
  'order' => 'DESC' ,
  'posts_per_page' => 6,
  'cat'         => '3',
  'paged' => get_query_var('paged'),
  'post_parent' => $parent
); 
$q = new WP_Query($args);
if ( $q->have_posts() ) { 
  while ( $q->have_posts() ) {
    $q->the_post();
    // il tuo loop
  }
}

Nota che ho convertito il tuo query_posts() in un nuovo oggetto WP_Query. Non usare mai query_posts(), mai. Anche il Codex lo afferma.

Nota: Questa funzione non è pensata per essere utilizzata da plugin o temi. Come spiegato in seguito, ci sono opzioni migliori e più performanti per modificare la query principale. query_posts() è un modo eccessivamente semplicistico e problematico per modificare la query principale di una pagina sostituendola con una nuova istanza della query. È inefficiente (ri-esegue le query SQL) e fallirà completamente in alcune circostanze (specialmente spesso quando si ha a che fare con l'impaginazione dei post). Qualsiasi codice WP moderno dovrebbe utilizzare metodi più affidabili, come sfruttare l'hook pre_get_posts, per questo scopo.

http://codex.wordpress.org/Function_Reference/query_posts

Inoltre, nota che ho rimosso i tag PHP di apertura e chiusura non necessari e ho formattato il codice per una migliore leggibilità. Quella sintassi alternativa delle strutture di controllo è una ricetta per il fallimento, secondo la mia esperienza.

21 mag 2014 18:42:56
1

Personalmente, farei piuttosto così.

Invece di:

'category' => '3',

Sostituiscilo con questo:

'category_name' => 'il-mio-slug-categoria'

Ovviamente trova il nome del tuo slug di categoria e sostituisci 'il-mio-slug-categoria'.

Come menzionato da @s-ha-dum sarebbe meglio non usare questo metodo e piuttosto usare il metodo WP_Query. Puoi vederlo nel Codex di WordPress qui: http://codex.wordpress.org/Class_Reference/WP_Query#Parameters

21 mag 2014 18:47:15
Commenti

Grazie. Questo mi ha fornito la soluzione per capire che nella proprietà "category_name" è necessario inviare lo "slug" invece del nome della categoria (compresi gli spazi). Grazie!

Fernando Torres Fernando Torres
31 mag 2021 19:19:52
0

Aggiungi questo codice nel tuo file functions.php:

function wpsites_display_one_category( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
    $query->set( 'cat', '3' );
    }
}
add_action( 'pre_get_posts', 'wpsites_display_one_category' );

Modifica il tag condizionale is_home() conditional tag per corrispondere alla tua pagina di notizie o al loop della pagina degli articoli se necessario. Qualunque cosa tu abbia impostato in Impostazioni > Lettura.

21 mag 2014 18:52:00
0

Dovresti cambiare

'category'         => '3',

nel tuo codice con:

'cat' => '3',
13 nov 2018 13:01:47