정적 페이지에서 마지막 3 개의 게시물 (최근 게시물)을 표시하는 방법


답변:


24

나는 보통이 접근법을 사용한다 :

잘못된 접근

<?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 __('No News'); ?></p>

<?php endif; ?>

@swissspidy의 도움으로 올바른 방법 은 다음과 같습니다.

<?php 
   // the query
   $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 __('No News'); ?></p>
<?php endif; ?>

자세한 내용은 @codex 를 참조하십시오 .


2
사용 이 거의 항상 나쁜 생각 인 이유를 보여주기 위해 wordpress.stackexchange.com/a/1755/12404 를 참조하고 싶습니다 query_posts().
swissspidy 2012

4

그것은 당신이 가고있는 것에 달려 있습니다. "게시물 페이지"(즉, 새 페이지 템플리트 파일 작성)를 수행하려는 경우 해당 페이지에 보조 루프를 작성할 수 있습니다.

코덱 은 이것에 대한 예를 가지고 있으며 여기에 아주 잘린 다른 예가 있습니다.

<?php
/*
Template Name: Page of Posts
*/
get_header(); 
?>

<?php while( have_posts() ): the_post(); /* start main loop */ ?>

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

    <?php
        /* Start Secondary Loop */
        $other_posts = new WP_Query( /*maybe some args here? */ );
        while( $others_posts->have_posts() ): $other_posts->the_post(); 
    ?>
        You can do anything you would in the main loop here and it will
        apply to the secondary loop's posts
    <?php 
        endwhile; /* end secondary loop */ 
        wp_reset_postdata(); /* Restore the original queried page to the $post variable */
    ?>

<?php endwhile; /* End the main loop */ ?>

어떤 페이지 에든 넣을 수있는 것을 찾고 있다면 가장 좋은 해결책은 단축 코드 입니다. 여러 게시물을 가져 와서 목록 (또는 원하는대로)으로 반환하는 단축 코드를 만들어야합니다. 예를 들면 :

<?php
add_action( 'init', 'wpse36453_register_shortcode' );
/**
 * Registers the shortcode with add_shortcode so WP knows about it.
 */
function wpse36453_register_shortcode()
{
    add_shortcode( 'wpse36453_posts', 'wpse36453_shortcode_cb' );
}

/**
 * The call back function for the shortcode. Returns our list of posts.
 */
function wpse36453_shortcode_cb( $args )
{
    // get the posts
    $posts = get_posts(
        array(
            'numberposts'   => 3
        )
    );

    // No posts? run away!
    if( empty( $posts ) ) return '';

    /**
     * Loop through each post, getting what we need and appending it to 
     * the variable we'll send out
     */ 
    $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;
}

이것을 header.php에 넣을 수 있습니까 아니면 다른 곳에 넣어야합니까?
user385917

첫 번째 예는 테마의 어느 곳으로나 갈 수 있습니다. 두 번째, 단축 코드, 예제에 가야한다functions.php
chrisguitarguy

첫 번째 코드 블록에는 3 개의 포스트를 반복 할 필요가 없습니다.
Murhaf Sousli

3

워드 프레스 코덱스에서이 정확한 사례에 대한 가이드가 있습니다. 그것을 참조 여기 : 그것은 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; ?>

1

Wordpress는 이러한 종류의 요청에 대한 함수를 제공합니다 : query_posts () .

query_posts ()는 WordPress가 게시물을 표시하는 데 사용하는 기본 쿼리를 변경하는 가장 쉬운 방법입니다. query_posts ()를 사용하여 일반적으로 특정 URL에 표시되는 게시물과 다른 게시물을 표시하십시오.

예를 들어 홈페이지에는 일반적으로 최신 10 개의 게시물이 표시됩니다. 5 개의 게시물 만 표시하고 페이지 매김에 신경 쓰지 않으려면 query_posts ()를 다음과 같이 사용할 수 있습니다.

query_posts ( 'posts_per_page = 5');

쿼리를 수행 한 후에는 원하는 방식으로 게시물을 표시 할 수 있습니다.


-1
<?php $the_query = new WP_Query( 'posts_per_page=3' ); 
while ($the_query -> have_posts()) : $the_query -> the_post();?>
<?php /*html in here etc*/ the_title(); ?>
<?php endwhile;wp_reset_postdata();?>

질문에 대답하는 코드-정적 페이지에 마지막 3 개의 게시물 (최근 게시물)을 표시하는 방법은 무엇입니까? "일반적으로이 방법을 사용합니다"라고 말하면 도움이 되겠습니까?
Jon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.