Cum să afișezi ultimele 3 postări (postări recente) într-o pagină statică?

14 dec. 2011, 14:56:29
Vizualizări: 162K
Voturi: 17

Doresc să implementez ceva similar cu "postări recente" într-o pagină statică:

http://themes.codehunk.me/insignio/ (în subsol)

Cum aș putea realiza acest lucru fără un widget?

0
Toate răspunsurile la întrebare 5
1
35

De obicei folosesc această abordare:

abordare greșită

<?php query_posts( array(
   'category_name' => 'news',
   'posts_per_page' => 3,
)); ?>

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

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

<?php else : ?>

   <p><?php __('Niciun Știre'); ?></p>

<?php endif; ?>

Cu ajutorul lui @swissspidy modul corect este acesta:

<?php 
   // interogarea
   $the_query = new WP_Query( array(
     'category_name' => 'news',
      'posts_per_page' => 3,
   )); 
?>

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

    <?php the_title(); ?>
    <?php the_excerpt(); ?>

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

<?php else : ?>
  <p><?php __('Niciun Știre'); ?></p>
<?php endif; ?>

Vezi @codex pentru mai multe informații.

1 feb. 2017 19:17:53
Comentarii

Îmi place să mă refer la http://wordpress.stackexchange.com/a/1755/12404 pentru a arăta de ce utilizarea funcției query_posts() este aproape întotdeauna o idee proastă.

swissspidy swissspidy
1 feb. 2017 22:44:27
3

Depinde în mare măsură de ceea ce dorești să obții. Dacă vrei să creezi o „pagină de articole” – cu alte cuvinte, să creezi un fișier șablon de pagină nou – poți crea o buclă secundară pe acea pagină.

Codex-ul conține un exemplu în acest sens, iar aici este un alt exemplu, extrem de simplificat.

<?php
/*
Template Name: Pagină de Articole
*/
get_header(); 
?>

<?php while( have_posts() ): the_post(); /* începe bucla principală */ ?>

    <h1><?php the_title(); ?></h1>

    <?php
        /* Începe Bucla Secundară */
        $other_posts = new WP_Query( /* poate niște argumente aici? */ );
        while( $others_posts->have_posts() ): $other_posts->the_post(); 
    ?>
        Poți face orice ai face în bucla principală aici, iar aceste acțiuni vor fi 
        aplicate articolelor din bucla secundară
    <?php 
        endwhile; /* încheie bucla secundară */ 
        wp_reset_postdata(); /* Restabilește pagina inițială interogată în variabila $post */
    ?>

<?php endwhile; /* Încheie bucla principală */ ?>

Dacă cauți ceva pe care să îl poți adăuga pe orice pagină, cea mai bună soluție ar fi un shortcode. Va trebui să creezi un shortcode care preia mai multe articole și le returnează într-o listă (sau orice altceva dorești). Un exemplu:

<?php
add_action( 'init', 'wpse36453_register_shortcode' );
/**
 * Înregistrează shortcode-ul cu add_shortcode, astfel încât WordPress să îl recunoască.
 */
function wpse36453_register_shortcode()
{
    add_shortcode( 'wpse36453_posts', 'wpse36453_shortcode_cb' );
}

/**
 * Funcția de callback pentru shortcode. Returnează lista noastră de articole.
 */
function wpse36453_shortcode_cb( $args )
{
    // obține articolele
    $posts = get_posts(
        array(
            'numberposts'   => 3
        )
    );

    // Nu există articole? ieși!
    if( empty( $posts ) ) return '';

    /**
     * Parcurge fiecare articol, obține ceea ce avem nevoie și adaugă-l la 
     * variabila pe care o vom returna
     */ 
    $out = '<ul>';
    foreach( $posts as $post )
    {
        $out .= sprintf( 
            '<li><a href="%s" title="%s">%s</a></li>',
            get_permalink( $post ),
            esc_attr( $post->post_title ),
            esc_html( $post->post_title )
        );
    }
    $out .= '</ul>';
    return $out;
}
14 dec. 2011 16:01:45
Comentarii

Pot să pun asta în header.php sau ar trebui să o pun altundeva?

user385917 user385917
15 dec. 2011 13:49:28

Primul exemplu poate fi plasat oriunde în tema ta. Al doilea exemplu, cel cu shortcode, ar trebui pus în functions.php

chrisguitarguy chrisguitarguy
15 dec. 2011 18:35:10

primul bloc de cod nu are o buclă pentru a parcurge 3 articole

Murhaf Sousli Murhaf Sousli
10 iun. 2014 04:09:18
0

Există un ghid pentru acest caz precis în codex-ul WordPress. Vezi-l aici: Am inserat codul aici deoarece este destul de scurt, pentru mai multe informații accesează site-ul wordpress.org.

<?php
$args = array( 'numberposts' => 10, 'order'=> 'ASC', 'orderby' => 'title' );
$postslist = get_posts( $args );
foreach ($postslist as $post) :  setup_postdata($post); ?> 
    <div>
        <?php the_date(); ?>
        <br />
        <?php the_title(); ?>   
        <?php the_excerpt(); ?>
    </div>
<?php endforeach; ?>
26 oct. 2012 16:19:01
0

WordPress oferă o funcție pentru acest tip de cerere: query_posts().

query_posts() este cea mai ușoară modalitate de a modifica interogarea implicită pe care WordPress o folosește pentru a afișa articolele. Utilizați query_posts() pentru a afișa articole diferite de cele care ar apărea în mod normal la o anumită adresă URL.

De exemplu, pe pagina principală, ați vedea în mod normal ultimele 10 articole. Dacă doriți să afișați doar 5 articole (și nu vă pasă de paginare), puteți folosi query_posts() astfel:

query_posts( 'posts_per_page=5' );

După ce ați efectuat interogarea, puteți afișa articolele în modul dorit.

14 dec. 2011 15:25:19
1
-1
<?php $the_query = new WP_Query( 'posts_per_page=3' ); 
while ($the_query -> have_posts()) : $the_query -> the_post();?>
<?php /*html aici etc*/ the_title(); ?>
<?php endwhile;wp_reset_postdata();?>
16 mai 2019 14:21:23
Comentarii

este un cod care răspunde la întrebarea - Cum să afișezi ultimele 3 postări (postări recente) într-o pagină statică? Ți-ar fi de ajutor dacă aș spune - "De obicei folosesc această abordare:"?

Jon Jon
16 mai 2019 15:25:22