アトリエロワ

wordpressカスタム投稿のsingle-カスタム.phpのページナビ(ターム分類内)

カスタム投稿 news
ターム cate
のsingle-news.phpのページナビをタームcateに登録したカテゴリーごとに回るようにする。

  <?php
$taxonomies = get_object_taxonomies(get_post_type());

foreach ($taxonomies as $taxonomy) {
    $terms = get_the_terms(get_the_ID(), $taxonomy);

    if ($terms && !is_wp_error($terms)) {
        foreach ($terms as $term) {
            $term_link = get_term_link($term);

            if (!is_wp_error($term_link)) {
                $term_query_args = array(
                    'post_type' => get_post_type(),
                    'posts_per_page' => -1,
                    'tax_query' => array(
                        array(
                            'taxonomy' => $taxonomy,
                            'field' => 'id',
                            'terms' => $term->term_id,
                        ),
                    ),
                    'orderby' => 'post_date', // 投稿日で並び替え
                    'order' => 'ASC', // 昇順で表示
                );

                $term_posts = new WP_Query($term_query_args);

                $current_index = array_search(get_the_ID(), wp_list_pluck($term_posts->posts, 'ID'));

                $prev_post = ($current_index > 0) ? $term_posts->posts[$current_index - 1] : null;
                $next_post = ($current_index !== false && $current_index < count($term_posts->posts) - 1) ? $term_posts->posts[$current_index + 1] : null;

                // Output the current term
                if (!empty($prev_post)) {
                    echo '<div class="prev"><a href="' . esc_url(get_permalink($prev_post->ID)) . '">' . esc_html($prev_post->post_title) . '</a></div>';
                }
                ?>

                <div class="tolist">
                    <a href="<?php echo esc_url($term_link); ?>"><?php echo esc_html($term->name); ?></a>
                </div>

                <?php
                if (!empty($next_post)) {
                    echo '<div class="next"><a href="' . esc_url(get_permalink($next_post->ID)) . '">' . esc_html($next_post->post_title) . '</a></div>';
                }

                wp_reset_postdata(); // Reset the post data
                break; // 最初のタクソノミーのみ表示するためループを終了します
            }
        }
    }
}
?>

HOME > wordpress設計術 > wordpressカスタム投稿のsingle-カスタム.phpのページナビ(ターム分類内)

wordpress設計術

wordpress設計術