Afișarea tuturor articolelor din categorii specifice pe o pagină

2 ian. 2013, 13:43:28
Vizualizări: 28K
Voturi: 5

Vreau să afișez toate articolele din anumite categorii specifice pe o singură pagină. Pentru aceasta am editat fișierul page.php din folderul temei mele. Am adăugat o clauză 'if' pentru a verifica ce pagină este afișată în prezent și pentru a încărca toate articolele din următoarele categorii.

<?php get_header(); ?>

<div id="primary">
    <div id="content" role="main">

<?php
    if (is_page(26)) {
        query_posts('cat=2,6,9,13&showposts=-1&orderby=date');    
        if (have_posts()) : 
            while (have_posts()) : 
                the_post(); 
                get_template_part( 'content', 'page' );
            endwhile; 
        endif;  
    } else {
        while ( have_posts() ) : 
            the_post(); 
            get_template_part( 'content', 'page' ); 
        endwhile; // sfârșitul buclei 
    }
?>

    </div><!-- #content -->
</div><!-- #primary -->

<?php get_footer(); ?>

Dar când încarc pagina mea cu ID-ul 26, nu se afișează nimic.

1
Comentarii

Nu folosiți query_posts http://wordpress.stackexchange.com/a/50762/10911. Folosiți WP_Query pentru asta http://codex.wordpress.org/Class_Reference/WP_Query

janw janw
2 ian. 2013 13:47:58
Toate răspunsurile la întrebare 2
0

Vă recomand să adăugați argumentul categoriei într-un array. Și nu folosiți query_posts. De asemenea, showposts este depreciat, folosiți posts_per_page în loc.

$args = array (
    'cat' => array(2,6,9,13),
    'posts_per_page' => -1, //showposts este depreciat
    'orderby' => 'date' //Puteți specifica mai mulți filtre pentru a obține datele 
);

$cat_posts = new WP_query($args);

if ($cat_posts->have_posts()) : while ($cat_posts->have_posts()) : $cat_posts->the_post();
        get_template_part( 'content', 'page' );
endwhile; endif;
2 ian. 2013 13:52:16
0

Aceasta se întâmplă pentru că încă folosești query_posts(). Nu mai face asta. Folosește WP_Query în schimb:

$extra_posts = new WP_Query( 'cat=2,6,9,13&showposts=-1&orderby=date' );
if ( $extra_posts->have_posts() )
{
    while( $extra_posts->have_posts() )
    {
        $extra_posts->the_post();
        get_template_part( 'content', 'page' );
    }
    wp_reset_postdata();
}
2 ian. 2013 13:49:26