web-dev-qa-db-ja.com

3〜5の最近の投稿で静的フロントページを作成する

私は自分のカスタムデザインのテーマのためのフロント/ランディングページのカスタマイズに苦労しています。私はカスタムテーマをデザインし、アンダースコアボイラープレートを使ってそれをコーディングしました。

私が理解しているように、コーデックスは私がfront-page.phpを作成しそしてそこでそれをカスタマイズすることを示唆している。 setting> readingで静的/フロントページ(静的歓迎メッセージを変更したいページ)を選択しました。その下に、サムネイル(私の機能で有効になっているもの)と抜粋付きの最近の投稿が3〜5個必要です。

私のfront-page.php:

<main id="main" class="site-main" role="main">

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

            <?php get_template_part( 'content', 'page' ); ?>

        <?php endwhile; // end of the loop. ?>

        <h2>Recent Posts</h2>
        <ul>
        <?php
            $args = array( 'numberposts' => '5' );
            $recent_posts = wp_get_recent_posts( $args );
            foreach( $recent_posts as $recent ){
                echo '<li><a href="' . get_permalink($recent["ID"]) . '" title="Look '.esc_attr($recent["post_title"]).'" >' .   $recent["post_title"].'</a> </li> ';
            }
        ?>
        </ul>

</main><!-- #main -->

これは動作しますが、サムネイルと抜粋を読み込む方法がわかりません。最も重要なことはこれは正しいですか?

1
nerijusgood

カスタムクエリの場合は、 wp_get_recent_posts または get_posts さえ使用しないようにします。このような。デフォルトでは、the_excerpt()のようなテンプレートタグはこれらの関数では利用できません。そしてこれらのテンプレートタグにアクセスするためには setup_postdata($post) を利用する必要があります。

私は個人的には WP_Query を使用することにしました。これはより柔軟です。特に、ページ付けが必要なカスタムクエリがある場合はそうです。

これは最新の5つの投稿を得るためのカスタムクエリの例です。注:HTMLマークアップは含まれていません。利用可能なすべての引数のリストについては、私がWP_Queryで提供したリンクを調べてください。

$args = array(
    'posts_per_page' => 5,
    'order' => 'DESC'
);

$rp = new WP_Query( $args );

if($rp->have_posts()) :
    while($rp->have_posts()) : $rp->the_post();

       the_title(); // posttitle
       if ( has_post_thumbnail() ) {  // check if the post has a Post Thumbnail assigned to it.
          the_post_thumbnail(); //display the thumbnail
       } 

       the_excerpt(); // displays the excerpt

    endwhile;
    wp_reset_postdata(); // always always remember to reset postdata when using a custom query, very important
endif;

さらに読むために:

2
Pieter Goosen

あなたが使用することができます:

get_the_post_thumbnail($recent['ID'], 'post-thumbnail');

サムネイルを取得するために。残念ながら、抜粋を取得する方法はありませんが、PHPを使用してコンテンツをトリミングすることはできます。

あるいは、私が今まで使ったことのないフックがあります。試してみると、その抜粋のための作品を見ることができます。

get_post_field();

0
user58014

このコードを使用して画像を取得することができます。
$src = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'medium', false, '' ); $thumbnailSrc = $src[0];

ここで、 'medium'はサムネイルのサイズです。これは次のように変更できます。 サムネイル、大きいまたは特別なサイズ functions.php ejのサムネイルをサポートして作成されました。
add_image_size( 'postslider', 680,310, true );

img src="php echo $src; ?で画像を印刷しています。コード内にphpタグを含めることを忘れないでください

抜粋の簡単な方法はthe_content();の代わりにthe_excerpt();です。

0

前の2つの答えがあなたに近づくように見えますが、私が理解しているように、カスタムクエリの後、foreachループを2番目のwordpressループ呼び出しに変更する必要があるかもしれません(例 ここ 「例」セクション):

wordpressループを使用することをお勧めする理由は、関数the_excerpt()は標準のループフレームワーク内でのみ機能するためです。 「ループ」内にいる場合は、使用します

the_post_thumbnail( 'your-custom-post-size-here' );

のではなく

get_the_post_thumbnail

yusri Mathewsが示唆するように。あなたのforeachループのような場合、彼の答えは「ループ」の外側で機能します。

ただし、上記のように、「ループ」にいる場合は、the_excerpt()にアクセスして、目的地に行くことができます。

0
Iso