ワードプレスのループの外で、任意のカスタム投稿タイプの最新の記事を取得し、タイトルをリンク付きでテーマで出力するPHPコードをご紹介いたします。

任意のカスタム投稿タイプの最新記事を取得し、ul と li タグで出力するシンプルなPHPコード

このコードはループ※外でも動作します。テーマの任意の個所挿入すると任意のカスタム投稿タイプの最新記事を取得し、ul と li タグで記事本体へのリンクと日付付きで出力します。

<ul class="postlist">
    <?php
    $posts = get_posts([
      'post_type' => 'カスタム投稿タイプのスラグ',
      'post_status' => 'publish',
      'numberposts' => 3
    ]);
    
    foreach($posts as $post){
        $postdate = explode(" ",$post->post_date)[0];
        $posttitle = $post->post_title;
        $link = get_permalink($post->ID);
        echo '<li class="postlist_item">
        <p class="itemdate">'.$postdate.'</p>
        <p class="itemtitle"><a href="'.$link.'" target="_blank">'.$posttitle.'</a></p>
        </li>';
    }
    ?>
</ul>

※ループとは下記のようなコードで投稿を出力するワードプレス特有の書式です

if ( have_posts() ) : while ( have_posts() ) : the_post();

コードの解説

get_posts はワードプレスのループ外で様々な条件を付与して任意の投稿のリストを取得する関数です。

‘post_type’ => ‘カスタム投稿タイプのスラグを指定します’,
‘post_status’ => ‘publish’, 公開状態の投稿のみを取得します
‘numberposts’ => 3 最大3つの投稿を取得します

上記のコードで取得したカスタム投稿のリストを foreach($posts as $post){ で次から次にHTMLのコード化して出力しています。

$postdate = explode(” “,$post->post_date)[0]; 投稿日時から時間を除外して投稿日のみを$postdateに格納しています。

$posttitle = $post->post_title; タイトルを$posttitleに格納しています。

$link = get_permalink($post->ID); 投稿IDからその投稿のリンクを取得しています。

最後にecho でliタグにくるんで各情報をその場所に出力しています。
任意のカスタム投稿タイプの最新の記事を表示するためによく使われるコードとなります。

ご参考になりましたら幸いです。

WordPress プラグインやテーマのカスタマイズはワードプレスのPHPコーディングの専門家集団WPドクターまでお気軽にご依頼・ご相談お送りください