web関連

【wordpress】一番古い記事を取得する方法

wordpressの一番古い記事の出力方法について調べた時の備忘録

wordpressで一番古い記事を取得する方法

メモがてらget_postsで取得したときとwp_queryで取得したときのコード乗っけておく

get_postsを使って一番古い記事の取得方法

<?php
$data = get_posts('post_type=post&posts_per_page=1&order=ASC');
if(isset($data[0])) : 
?>
// 記事リンク、タイトル、日付取得
<a href="<?php echo get_permalink($data[0]->ID); ?>">
    <?php echo date('Y年m月d日', strtotime($data[0]->post_date)); ?><br>
    <?php echo ($data[0]->post_title); ?>
</a>
// 記事本文取得
<?php echo ($data[0]->post_content); ?>
<?php endif; ?>

WP_Queryを使って一番古い記事の取得方法

<?php
$query = new WP_Query(
    array(
        'post_type' => 'post',
        'posts_per_page' => 1,
        'order' => 'ASC'
    )
);
if ( $query->have_posts() ):
    while ( $query->have_posts() ) : $query->the_post(); ?>
// 記事リンク、タイトル、日付取得
<a href="<?php the_permalink(); ?>">
    <?php the_time('Y年m月d日'); ?>
    <?php the_title(); ?>
</a>
// 記事本文取得
<?php the_content(); ?>
<?php
endwhile;
wp_reset_postdata();
endif;
?>
ソート方法を指定するorderbyパラメーターのdefaultは'date'になってるはずだから、orderパラメーターを'ASC'(古い記事から表示)にして、記事を1件のみにしぼるだけで一番古い記事は取得できると思う

wpdbクラスを使ってDBから一番古い記事の取得方法

調べていたらwpdbってクラスがあってそれを使ってDBから取得することもできるみたいね

global $wpdb;
$results = $wpdb->get_results( "
SELECT *
FROM $wpdb->posts
WHERE post_status = 'publish'
AND post_type = 'post'
ORDER BY post_date ASC LIMIT 1
");

echo $results[0]->post_title;// 記事タイトル
echo $results[0]->post_date;// 公開日付
echo $results[0]->guid;// url
echo $results[0]->post_content;// 記事本文

書いていることとしては上の二つとほぼ一緒
データベースでどのテーブルを取得するか選択して「公開(publish)」記事の一番古い記事の情報を取得している

get_results()で取得した場合はオブジェクトや配列として取得する形になるから複数取得したときは
foreach()使う必要性があるけど今回は1件だから番号指定すればok

他に、「get_var(最初の1件のレコードのみを取得するから展開の必要がない)」や「get_col(列)」「get_row(行指定)」というのがある(メモ)

一番古い記事だけだったら「’ASC’」だけでよかったけど勉強がてらwbdbクラスまで手を出してみた

Leave a Comment

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。

CAPTCHA