最初に投稿を公開した日付を取得する...というのは、サイトのクレジット表示に範囲指定したい、〇〇からサイトを運営していますという案内を表示したいといったことぐらいでしか利用はしないと思いますが、一応取得方法をメモとして公開しておきます。
おおまかに2つ方法がありますが、最初に紹介する取得方法がおすすめです(理由については2つめのコード紹介のところで説明しています)。
サイトで最初に投稿が公開されてた年を取得する方法
取得するコード
以下のコードを使って、そのサイトで最初にコンテンツが公開された年を取得することができます。
function haup_first_post_year() {
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'orderby' => 'date',
'order' => 'ASC',
'posts_per_page' => 1
);
$query = new WP_Query($args);
if ($query->have_posts()) {
$query->the_post();
$first_post_date = get_the_date('Y', $query->post->ID);
wp_reset_postdata();
return $first_post_date;
} else {
return 0; // エラー時のデフォルト値などを適切に設定してください
}
}
多分クラシックテーマで何かの一覧を作ったり、独自の一覧などを作る際に目にしたことがある、WP_Queryというクラスを使用して、一番古い投稿の日付を1件取得して、その中の情報(今回は日付)を返すという処理をさせています。
WP_Queryクラスについては以下の公式ページをご覧ください。
このコードはコールバック関数(情報を取得して渡すだけの関数)といって何かの情報を返す(return)するだけなので、次項のようなショートコードを使って表示させるようにしましょう。
取得した情報をショートコードで表示させる方法
前項のコールバック関数で取得した年をショートコードで出力させるためのコード例です。
function pwcn_fyear_shortcode() {
$start_year = absint(pwcn_first_post_year());
return '<span>'.$start_year.'</span>';
}
add_shortcode('pwcn-fyear', 'pwcn_fyear_shortcode');
コード追加後、以下のショートコードをサイト内に挿入すれば、最初にコンテンツを作成した年を表示することができます。
[pwcn-fyear]
wpdbを使う方法もあるけど..
実はずっと前に、当サイトフッターにあるクレジット表記で最初にコンテンツを公開した年を取得するため、どこかの記事を参考に、wpdbというクラスを使って情報を取得していました。
前述したWP_Queryを使わずに以下のコードでもこの情報を取得することができます。
function pwcn_first_post_year(){
global $wpdb;
//DB検索
$first_post_date = $wpdb->get_var("SELECT post_date from $wpdb->posts where post_status = 'publish' and post_type = 'post' ORDER BY post_date ASC LIMIT 1");
$yyyy = intval(substr($first_post_date, 0, 4));
return $yyyy;
}
このコードで使っているwpdbクラスは、WordPressが接続しているデータベースに直接アクセスして情報を取得することができるので、今回のようにWP_Queryを使うよりも簡易なコードで済みますし、特に知識もなかったので問題視はしていませんでした。
でも、いろいろと調べていくと、危険ケースがあるようで、WP_Queryで同じことができるのですから、わざわざリスクを冒してまでwpdbを使用する必要はないでしょう。
wpdbって何?どんなリスクがあるの?などについては以下の公式ページで確認ください。
コメントを残す