Afișarea articolelor dintr-o categorie specifică pe o pagină personalizată?

21 mai 2014, 18:13:56
Vizualizări: 90.1K
Voturi: 4

Încerc să fac ca pagina mea de știri să afișeze conținut doar dintr-o singură categorie (numărul 3), dar nu reușesc să o fac să funcționeze. În loc să afișeze doar articolele din categoria 3, afișează articole din toate categoriile.

Iată codul meu:

<?php get_header(); ?>

            <div class="content news_page">

                       <h1>Ultimele Știri</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">Citește mai mult</a></p>
<br>
<div class="clear"></div>
                                       </div>
                                    </div>

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


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

            </div><!-- sfârșitul conținutului -->



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

<?php get_footer(); ?>
4
Comentarii

Exact ce nu funcționează? De asemenea, te rog să nu folosești query_posts.

s_ha_dum s_ha_dum
21 mai 2014 18:22:58

Bună, în loc să afișeze postări dintr-o anumită categorie, afișează postări din toate categoriile

user3615681 user3615681
21 mai 2014 18:27:55

Pagina ta de știri este setată ca pagina de postări în Setările de Citire?

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

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

Muhammad Bilal Muhammad Bilal
28 mar. 2018 17:42:58
Toate răspunsurile la întrebare 5
0

Obține Primele Cinci Articole Cu O Anumită Categorie

<?php
        // interogarea
        $the_query = new WP_Query(array(
            'category_name' => 'nume_categorie_articol',
            '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 __('Niciun Știre'); ?></p>
        <?php endif; ?>
12 ian. 2018 14:26:03
0

Argumentul nu este category, ci cat. Interogarea dvs. eșuează deoarece utilizați un argument care nu există.

$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();
    // bucla ta
  }
}

Observați că am convertit query_posts() într-un nou obiect WP_Query. Nu utilizați niciodată query_posts(). Chiar și Codex menționează acest lucru.

Notă: Această funcție nu este destinată să fie utilizată de plugin-uri sau teme. După cum se explică mai târziu, există opțiuni mai bune și mai performante pentru a modifica interogarea principală. query_posts() este o metodă mult prea simplistă și problematică de a modifica interogarea principală a unei pagini prin înlocuirea ei cu o nouă instanță a interogării. Este ineficientă (re-execută interogările SQL) și va eșua în anumite circumstanțe (mai ales când vine vorba de paginarea postărilor). Orice cod WP modern ar trebui să utilizeze metode mai fiabile, precum utilizarea hook-ului pre_get_posts, în acest scop.

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

De asemenea, observați că am eliminat tag-urile de deschidere și închidere PHP inutile și am formatat codul pentru o lizibilitate mai bună. Acea sintaxă alternativă a structurii de control este o rețetă pentru eșec, din experiența mea.

21 mai 2014 18:42:56
1

Aș face personal astfel mai degrabă.

În loc de:

'category' => '3',

Înlocuiți cu:

'category_name' => 'slug-ul-categoriei-mele'

Evident, găsiți numele slug-ului categoriei și înlocuiți 'slug-ul-categoriei-mele'.

După cum a menționat @s-ha-dum, ar fi mai bine să nu folosiți această metodă și să utilizați în schimb metoda WP_Query. Puteți vedea mai multe detalii în Codex-ul WordPress aici: http://codex.wordpress.org/Class_Reference/WP_Query#Parameters

21 mai 2014 18:47:15
Comentarii

Mulțumesc. Aceasta mi-a oferit soluția de a ști că în proprietatea "category_name" trebuie să trimiteți "slug-ul" în loc de numele categoriei (inclusiv spațiile). Mulțumesc!

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

Adaugă acest cod în fișierul tău 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' );

Schimbă condiția is_home() conditional tag pentru a se potrivi cu pagina ta de știri sau bucla paginii de articole dacă este necesar. Orice ai setat în Setări > Citire.

21 mai 2014 18:52:00
0

Ar trebui să modifici

'category'         => '3',

în codul tău cu:

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