WordPressの$wpdbで現在の記事が何記事目か条件指定で取得して連番を表示する
WordPressで連載記事などを書きたいとき、毎回手動で連番をつけるのは嫌なので自動で表示させるようにしてみます。また、途中で記事を並び替えた場合も自動で番号が正しく表示させるようにしました。
全記事中何記事目かを取得
function getPostThNumber() {
global $wpdb, $post;
$number = $wpdb->get_var("
SELECT COUNT(*)
FROM $wpdb->posts
WHERE post_status = 'publish'
AND post_type = 'post'
AND post_date <= '$post->post_date'
");
return $number;
}
$wpdb
を使ってSQL文で取得するようにします。
<h1>第<?php echo getPostThNumber() ?>回:<?php the_title() ?></h1>
例えば、こんな感じで記述すれば記事タイトル前に第3回:のように自動で表記されるようになります。
カテゴリごとに何記事目かを取得
function getPostThNumber() {
global $wpdb, $post;
$categoryID = get_the_category($post->ID)[0]->term_id;
$number = $wpdb->get_var("
SELECT COUNT(*)
FROM $wpdb->posts INNER JOIN $wpdb->term_relationships ON $wpdb->posts.ID = $wpdb->term_relationships.object_id
WHERE post_status = 'publish'
AND post_type = 'post'
AND term_taxonomy_id = $categoryID
AND post_date <= '$post->post_date'
");
return $number;
}
検索条件にカテゴリを指定するために2つのテーブルを内部結合させています。
CSS本執筆しました!!!
CSS本出します!1/29発売予定
— たかもそ@CSS本1/29発売!! (@takamosoo) 2018年12月31日
自分がCSS学びたての頃にもっとはやく知りたかったテクニックを載せています。CSSの基礎知識について解説していないので、中級者〜向けとなります。CSS入門書を読んではみたものの、思い通りに作れない人にオススメです。
よろしくお願いします。https://t.co/fkz1dM03Pj pic.twitter.com/suYyaPqwIs