WordPressで最新記事の投稿URLを取得する方法

wordpress

WordPressで投稿タイプ別に最新記事を取得するスクリプトを書いたので備忘録で残しておきます。

functions.phpに登録する方法


<?php function get_last_article_id($post_type) { $args = array( 'posts_per_page' => 1, // 1記事
        'orderby'          => 'date', //日付順
        'order'            => 'DESC', // 最新順
        'post_type'        => $post_type, // パラメータで取得したpost_type
    );
    $my_posts = get_posts( $args );
    wp_reset_postdata();
    return $my_posts[0]->ID;
}

wp_reset_postdata() はメインクエリの $post グローバル変数を復元するためです。
テンプレート側から、以下のコードで呼び出します。

 

<a href="<?php echo esc_url( get_permalink ( get_last_article_id ( 'post' ) )">

投稿タイプは、投稿ならpost、固定ページならpage、カスタム投稿タイプ(news)ならnewsと指定するだけです。

テンプレートに直接埋め込む方法

functions.phpに書かない場合は、下記の様にもできます。

<?php
$myposts = get_posts( "post_type=post&orderby=date&order=desc&posts_per_page=1" );
if ( empty( $myposts ) ): ?>
<a href="<?php echo esc_url( home_url( '/' ) ); ?>">
<?php else: ?>
<a href="<?php echo get_permalink( $myposts[0] ); ?>">カスタム投稿最新記事</a>
<?php endif; ?>
<?php wp_reset_postdata() ;?>