■やりたいこと
カスタム投稿ページ一覧にページネーション機能を導入したい
■問題点
下記の記事を参考にページネーション機能を導入しようとしたが数字をクリックしても記事が切り替わらない。
参考
php
1//index.php 2<dl> 3 <?php $args = array( 4 'numberposts' => 5, 5 'post_type' => 'notice' 6 ); 7 $customPosts = get_posts($args); 8 if($customPosts):foreach($customPosts as $post):setup_postdata($post); 9 ?> 10 <dt><a href="<?php the_permalink(); ?>"><?php the_date('Y/m/d'); ?></a> 11 <dd><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> 12 <?php endforeach; ?> 13 <?php else: ?> 14 <p>ページがありません</p> 15 <?php endif; ?> 16 <!-- ページネーション --> 17 <?php wp_reset_postdata(); ?> 18 <?php pagenation($posts_per_page, 'notice');?> 19</dl> 20 21//functions.php 22function pagenation($limit = NULL, $post_typed = 'posts') { 23 global $wp_rewrite; 24 global $paged; 25 global $wp_query; 26 27 // 検索条件 28 $query = array(); 29 if ($limit != NULL) { 30 $query['posts_per_page'] = $limit; 31 } 32 if (count($query) != 0) { 33 $wp_query->query($query); 34 } 35 36 $wp_query->query(array( 37 'post_type' => $post_typed, 38 )); 39 $paginate_base = get_pagenum_link(); 40 41 if( strpos( $paginate_base, '?' ) || !$wp_rewrite->using_permalinks() ) { 42 $paginate_format = ''; 43 $paginate_base = add_query_arg( 'paged', '%#%' ); 44 } else { 45 $paginate_format = (substr( $paginate_base, -1, 1 ) == '/' ? '' : '/') . user_trailingslashit('page/%#%/','paged'); 46 $paginate_base .= '%_%'; 47 } 48 49 50 if( $paged < 2 ) { 51 $paged = 1; 52 } 53 $args = array( 54 'base' => $paginate_base, 55 'format' => $paginate_format, 56 'total' => $wp_query->max_num_pages, 57 'current' => $paged, 58 'show_all' => false, 59 'prev_next' => true, 60 'prev_text' => '«', 61 'next_text' => '»', 62 'type' => 'array', 63 ); 64 $pagenate_array = paginate_links($args); 65 66 // 配列がある場合のみ 67 if (is_array($pagenate_array) == TRUE) { 68 $pagenate .= '<div class="wp-pagenavi">'; 69 foreach ($pagenate_array as $key => $value) { 70 71 if (preg_match('/current/', $value) == TRUE) { 72 $class = ''; 73 } 74 else { 75 $class = ''; 76 } 77 78 // $value = "<span class=\"{$class}\">".$value.'</span>'; 79 // リンク追加 80 $pagenate .= $value; 81 } 82 83 $pagenate .= '</div>'; 84 echo $pagenate; 85 } 86} 87
php
1//追加 2//functions.php 3function init_func(){ 4 add_theme_support('title-tag'); 5 add_theme_support('post-thumbnails'); 6 7 register_post_type('notice',[ 8 'labels' => [ 9 'name' => 'お知らせ', 10 'singular_name' => 'お知らせ', 11 'add_new' => 'お知らせを追加', 12 'add_new_item' => 'お知らせを追加', 13 'edit_item' => 'お知らせを編集', 14 'new_item' => '新しいお知らせ', 15 'all_items' => '全てのお知らせ', 16 'view_item' => 'お知らせを見る', 17 'search_items' => 'お知らせを探す', 18 'not_found' => 'お知らせは見つかりませんでした', 19 'not_found_in_trash' => 'ゴミ箱は空です', 20 'parent_item_colon' => '', 21 'menu_name' => 'お知らせ' 22 23 ], 24 'public' => true, 25 'has_archive' => true, 26 'hierarchical' => false, 27 'supports' => [ 28 'title', 29 'editor', 30 'page-attributes' 31 ], 32 'menu_position' => 4, 33 'menu_icon' => 'dashicons-warning' 34 ]); 35} 36add_action('init','init_func'); 37 38
回答2件
あなたの回答
tips
プレビュー