Top

メモ書き

今回は実際制作時あった事例からのメモ。
タイトルの通り、動的ページのナンバリングになります。
固定ページなどの静的ページとは違って、数字入れるとなるといろんなパターンを考えないといけないから厄介ですよね。

プラグインを使う方法もありますが、プラグイン無しでも簡単にできることはプラグインなしでやった方が良いです。プラグイン同士の相性がわるいとうまく機能してくれなかったりしますからね。

functions.phpを使って
singleページでも有効な記事のナンバリングをする方法!

まずは結論となるコードを。
functions.phpに下記コードを記述します。

function get_post_number( $post_type = 'post', $op = '<=' ) {
    global $wpdb, $post;
    $post_type = is_array($post_type) ? implode("','", $post_type) : $post_type;
    $number = $wpdb->get_var("
        SELECT COUNT( * )
        FROM $wpdb->posts
        WHERE post_date {$op} '{$post->post_date}'
        AND post_status = 'publish'
        AND post_type = ('{$post_type}')
    ");
    return $number;
}

実際の制作で 01,02… などと1桁も2桁で表示したいデザインでしたので、その変換方法も一緒に。
下記コードを表示したいところに記述します。

<p class="article-num">
    <?php
        $count = get_post_number( $post->post_type ); 
        $count = sprintf("%02d",$count); // 一桁を二桁に
        echo $count;
    ?>
</p>

今回紹介するコードが有益なのは、一覧ページがページ遷移したとき、各々のsingleページにナンバーを表示したいときにも有効な点です。同じページ内だけでカウントする場合は他にも方法があるのですが、動的ページをページ繊維して思った通りの数値を出すのって難しいですよねー

ちなみに $count = sprintf(“%02d”,$count); で一桁を二桁にしているので、このコードを削除すれば1,2,3…と順番に表示してくれます。

これはまた他でも使えそうだ。
ではまた。