補足授業9. 過去記事の一覧表示ページを作ってた話

昔のブログでブログ書く民としてのブログ第9回目は、2012年11月23日の過去記事の一覧を作ろうの内容です。

過去記事の一覧表示のページを作る


この頃の身軽さというか、いろんなことに目が向いたりとか、今の自分にはもうないような、それがさみしいような、でもそれもいい。


当時のコードを見てみると

これを書いた時の自分を想像すると、WPの関数もちゃんとドキュメントを読んで書いていたのかどうかもあやしい感じでとにかく動いたl。動いたからよかった。そういう感じが残っている。wp_get_archivesというのは全記事をリスト表示してくれる関数で、phpファイルをテーマフォルダに置いて、固定ページのテンプレートとして指定する、という仕組みで、これが2012年当時のWordPressで調べたやり方だった。


WordPressの12年間

2012年から2025年のあいだに、WordPressのテーマの作り方はおおきく変わって、ブロックテーマという仕組みが導入されて、テーマをphpで書くのではなくてHTMLとJSONで書くという方向に舵を切った。てことで以前作っていた一覧の方法を使えなくなっていた。


では今どうやるのか

プラグインを使う

<?php
/*
Plugin Name: Takeken Shortcodes
*/

add_filter( 'redirect_canonical', function( $redirect_url, $requested_url ) {
    if ( is_page() && ( get_query_var( 'paged' ) > 0 || get_query_var( 'page' ) > 0 ) ) {
        return false;
    }
    return $redirect_url;
}, 10, 2 );

add_shortcode( 'archive_all', function() {
    $paged = max( get_query_var( 'paged' ), get_query_var( 'page' ), 1 );

    $posts = new WP_Query( array(
        'posts_per_page' => 35,
        'post_status'    => 'publish',
        'paged'          => $paged,
    ) );

    $html = '';
    if ( $posts->have_posts() ) {
        $html .= '<ul>';
        while ( $posts->have_posts() ) {
            $posts->the_post();
            $html .= '<li><a href="' . esc_url( get_permalink() ) . '">'
                    . esc_html( get_the_title() ) . '</a></li>';
        }
        $html .= '</ul>';
        wp_reset_postdata();

        $html .= paginate_links( array(
            'base'    => add_query_arg( 'paged', '%#%' ),
            'format'  => '',
            'current' => $paged,
            'total'   => $posts->max_num_pages,
        ) );
    }
    return $html;
} );

/wp-content/plugins/ に1ファイル置いて、固定ページのショートコードブロックに定義した名前を埋め込んで、あとはカスタムHTMLにリンク形式で書くと良い。
簡単なコードでデザインもここに書けるし。

フットワークの軽さは落ちたけれどそれなりに残っているものもある??サイドバーにおいたので見るべし

Related Posts


投稿者: Takeken

インターネット利用者のITリテラシーを向上したいという設定の2次元キャラです。 サーバー弄りからプログラミングまで手を付けた自称エッセイストなたけけんの物語。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です