ワードプレスのカスタムテンプレートについて

備忘録として雑にメモを残します

ChatGPTさんのアドバイス↓

特定のタグが付いた記事をリスト化し、10記事ごとに別のページにリストを記述するには、ページネーションを利用する方法があります。以下に、その手順を示します。

カスタムページテンプレートの作成:
テーマのフォルダ内に、新しいページ用のカスタムテンプレートファイル(例: custom-template.php)を作成します。このファイルには、特定のタグが付いた記事をリスト化するためのコードを含めます。

<?php
/*
Template Name: Custom Template
*/
get_header();

$tag = '特定のタグの名前';
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

$args = array(
    'tag' => $tag,
    'posts_per_page' => 10,
    'order' => 'DESC',
    'orderby' => 'date',
    'paged' => $paged,
);

$query = new WP_Query($args);

if ($query->have_posts()) {
    echo '<ul>';
    while ($query->have_posts()) {
        $query->the_post();
        $post_title = get_the_title();
        $post_link = get_permalink();
        $post_date = get_the_date();

        echo '<li>' . esc_html($post_date) . ' - <a href="' . esc_url($post_link) . '">' . esc_html($post_title) . '</a></li>';
    }
    echo '</ul>';

    // ページネーションの表示
    echo '<div class="pagination">';
    echo paginate_links(array(
        'total' => $query->max_num_pages,
        'current' => max(1, $paged),
    ));
    echo '</div>';

    wp_reset_postdata(); // クエリのリセット
}

get_footer();
?>
  1. ページネーションの設定:
    上記のコードでは、`paginate_links()`関数を使用してページネーションを表示しています。これにより、10記事ごとにページが切り替わります。

  2. ページの作成:
    WordPressの管理画面から新しいページを作成し、ページの属性で作成したカスタムテンプレート(`Custom Template`)を選択します。このページが特定のタグが付いた記事のリストを表示するページとなります。

この方法で、特定のタグが付いた記事を10記事ごとに別のページにリスト化して表示することができます。

ーーーーーーーー

これで試してみても一部うまくいかなかったんですけどね笑

(以下追記)

以下ChatGPTさんアドバイス

特定のタグが付いた記事を3つごとに新しいページで表示するには、ページネーションを導入してリストを分割する必要があります。以下に、修正されたコードを示します。

<?php
/*
Template Name: Tag List Template
*/
get_header();
?>

<div id="primary" class="content-area">
    <main id="main" class="site-main" role="main">

        <?php
        $tag = '特定のタグの名前';
        $args = array(
            'tag' => $tag,
            'posts_per_page' => 3, // 1ページあたりの記事数を設定
            'order' => 'DESC',
            'orderby' => 'date',
            'paged' => get_query_var('paged') ? get_query_var('paged') : 1,
        );

        $query = new WP_Query($args);

        if ($query->have_posts()) {
            echo '<ul>';
            while ($query->have_posts()) {
                $query->the_post();
                $post_title = get_the_title();
                $post_link = get_permalink();
                $post_date = get_the_date();

                echo '<li>' . esc_html($post_date) . ' - <a href="' . esc_url($post_link) . '">' . esc_html($post_title) . '</a></li>';
            }
            echo '</ul>';
            
            // ページネーションの表示
            echo '<div class="pagination">';
            echo paginate_links(array(
                'total' => $query->max_num_pages,
                'current' => max(1, get_query_var('paged')),
            ));
            echo '</div>';

            wp_reset_postdata(); // クエリのリセット
        } else {
            echo '該当する記事がありません。';
        }
        ?>

    </main><!-- #main -->
</div><!-- #primary -->

<?php
get_footer();
?>

このコードでは、`'posts_per_page' => 3` を指定して1ページあたりの記事数を3に設定し、`'paged'` パラメータを使用して現在のページ数を取得しています。ページネーションは `paginate_links` 関数を使用して表示され、各ページごとに3つの記事が表示されます。

このコードを通常の投稿用のPHPの中に一部抜き取って入れこんだら指定したタグの最新記事をリストで表記できるようになりました。
ただ見た目がよくないのでCSSで整えたいところです…

この記事が気に入ったらサポートをしてみませんか?