3ヶ月前に投稿

WordPressのget postsで投稿記事を表示する

2019年5月28日

この記事は約 10 分で読めます。

4

WordPress 最新の記事一覧を表示する方法
とかで検索すると、
かなりヒットするのですが、
色々と参考にして、わたしなりに
こんな感じがよいのかなと思い
ご紹介いたします。

最近の投稿を5件表示する

コード

<?php
$id = get_the_ID();
?>
<?php
$args = array( 'exclude' => $id, 'posts_per_page' => 5, 'order'=> 'DESC', 'post_type' => 'post', 'orderby' => 'post_date' );
$postslist = get_posts( $args );
?>
<?php if( $postslist ): ?>
<?php
foreach ($postslist as $post) : setup_postdata($post);
?>
<dl style="margin-bottom: 1.5em;">
    <dt>■ <?php echo date( 'Y-m-d', strtotime($post->post_date) ); ?> 
          | <a style="text-decoration:none; color: #6495ed;" href="<?php the_permalink($post);?>">
            <strong><?php echo wp_trim_words( get_the_title($post), 26, '...' ); ?></strong></a>
    </dt>
    <dd style="border-bottom:1px dotted #999999; padding:2px;"> <?php echo mb_substr(get_the_excerpt($post), 0, 26); ?>
        …<a href="<?php the_permalink($post);?>">続きを読む</a>
    </dd>
</dl>
<?php endforeach; 
wp_reset_postdata(); ?>
<?php else: ?>
<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>

パラメータ
パラメータの使い方の例は、get_pages() をごらんください。
get_posts()は WP_Query クラスを利用して投稿を取得します。
この関数で使えるパラメータについては、
WP_Queryドキュメンテーションのthe parameters section をごらんください。

テンプレートタグ/get posts – WordPress Codex 日本語版

get the ID – 現在の投稿のID(数値)を取得します。
このタグは、ループのなかでのみ
使用することができます。
$idに現在の投稿IDを格納して、
excludeで現在の投稿を
除外した一覧を表示します。

exclude – 取得したくない投稿情報ID
(複数指定する場合は,で区切る)

日付を表示するには
<?php echo get_the_date(); ?>
と書かれた記事が多いのですが、
わたしの場合上手くいきませんでした。
<?php echo date( ‘Y-m-d’, strtotime($post->post_date) ); ?>

strtotime()は、
指定した日時のUNIX TIMESTAMP ()を
取得するための関数です。

() UNIX TIMESTAMP とは
UNIXエポック、すなわち協定世界時 (UTC) での
1970年1月1日午前0時0分0秒から形式的な経過秒数。

<?php echo wp_trim_words( get_the_title($post), 20, ‘…’ ); ?>

タイトルを省略して表示する方法として
mb_substrで省略する方法を紹介している
記事が多いのですが、
wp trim words
WordPress内にて長い文字列を
省略して表示するための関数です。


<?php the_excerpt(); ?>
上記タグは、
投稿の抜粋を110文字、
文末に […](角括弧+三点リーダー)
をつけて表示します。

説明
このテンプレートタグ the_excerpt() は、現在の投稿の抜粋を、文末に […](角括弧+三点リーダー)をつけて表示します。この三点リーダーは「続きを読む」リンクではありません。抜粋を直接表示するために使われますが、get_the_excerpt() から返された文字列に
開始と終了の <p>タグを追加します。
投稿作成/編集画面 の抜粋文入力欄に記入してあればそれを、抜粋を入力していない場合は投稿内容の最初の 55個の単語までを表示します()。また、抜粋のコンテンツからは HTML タグと画像は取り除かれます。このタグはループ内でのみ使えます。

テンプレートタグ/the excerpt – WordPress Codex 日本語版

) 日本語のように語句の間を半角スペースで区切らない言語では「55単語」を判定できないため、抜粋できずに本文のほとんどが出力されてしまうことがあります。
WordPress 日本語版では、この問題を含むマルチバイト関連の問題に対処するために WP Multibyte Patch プラグインを同梱しています。このプラグインを使用すると、110文字まで(設定により変更可)を抜粋文として出力できます。

テンプレートタグ/the excerpt
文字数をコントロールするには、
<?php echo mb_substr(get_the_excerpt(), 0, 30); ?>
mb_substr — 文字列の一部を得る
mb_substr(get_the_excerpt(), 取り出し開始位置, 取り出す文字数);

setup_postdata – 投稿記事に関連するグローバル変数を設定する

注意
query_posts関数や get_posts関数、WP_Queryクラスを使って投稿記事を取得した後のループ処理にて、 the_post関数や wp_reset_postdata関数を使うことでこのsetup_postdata関数が呼び出され、関連するグローバル変数が更新される。

setup_postdata – WordPress私的マニュアル – elearn.jp

wp_reset_postdata – 投稿記事をリセットする

注意
時代はWP_Queryなのか」で紹介したようにWP_Queryクラスを使用して投稿記事を検索することができる。その場合、グローバル変数$postや各種投稿付随情報も更新されることになり、ページの表示内容に影響を及ぼしてしまう。このwp_reset_postdata関数は、$postをメインの投稿情報に切り替え、各種投稿付随情報も初期状態に戻す。

wp_reset_postdata – WordPress私的マニュアル – elearn.jp

アイキャッチ画像表示バージョン

<?php
$id = get_the_ID();
?>
<?php
$args = array( 'exclude' => $id, 'posts_per_page' => 5, 'order'=> 'DESC', 'post_type' => 'post', 'orderby' => 'post_date' );
$postslist = get_posts( $args );
?>
<?php if( $postslist ): ?>
<?php
foreach ($postslist as $post) : setup_postdata($post);
?>
<dl style="margin-bottom: 1.5em; clear: both;">
    <dt style="display: inline; clear:left;float:left;margin-right:10px;margin-bottom:10px;"><?php echo get_the_post_thumbnail( $post, array( 50, 50 )); ?></dt>
    <dt style="display: block;"><?php echo date( 'Y-m-d', strtotime($post->post_date) ); ?> 
          | <a style="text-decoration:none; color: #6495ed;" href="<?php the_permalink($post);?>">
            <strong><?php echo wp_trim_words( get_the_title($post), 20, '...' ); ?></strong></a>
    </dt>
    <dd style="overflow: hidden; font-size: 0.8em; border-bottom:1px dotted #999999; padding:1px 0 8px 0; display: block;"><?php echo mb_substr(get_the_excerpt($post), 17, 35); ?>
        …<a href="<?php the_permalink($post);?>">続きを読む</a>
    </dd>
</dl>
<?php endforeach; 
wp_reset_postdata(); ?>
<?php else: ?>
<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>

get_the_post_thumbnail – アイキャッチ画像(サムネイル)を取得する。

結果

2019-06-22 | にゃ~にゃ~の日 (2019年 6月)
毎月22日は 「にゃ~にゃ~の日」です。 そして、 アースデイ・アクシ …続きを読む
2019-06-19 | 空倶楽部 2019/06/19
アイキャッチ画像は 2019/06/17 13:30 自宅付近で 撮影 …続きを読む
2019-06-13 | WordPress Popular Po...
「 WordPress Popular Postsを grid表示して …続きを読む
2019-06-09 | 空倶楽部 2019/06/09
空倶楽部、 お題はクリアできませんでしたが、 今日は参加します。 アイ …続きを読む
2019-06-03 | WordPress Popular Po...
WordPress Popular Posts の作者 Hector …続きを読む

貴重なお時間を割き、
最後まで
ご高覧いただきまして
有難うございました
WordPressのget postsで投稿記事を表示する