wordpressで構築作業をする際、カスタム投稿タイプを使用することがあると思いますが、コード上の記述は何度見直してもあっているはずなのに(今までの案件では動いていた)、wp-pagenaviプラグインを使用してページング処理を行う際、ページングが動かないということがありましたので、そのときの解決策をメモしておきます。
コンテンツ目次
まずは、確実に動くコードを記述。
例えば、導入事例詳細(case_detail)とし、作成していくとします。
★functions.phpにカスタム投稿タイプを追加する記述
//カスタム投稿タイプ register_post_type( 'case_detail', array( 'label' => '導入事例詳細', 'description' => '導入事例詳細', 'hierarchial' => false, 'public' => true, 'has_archive' => true, 'supports' => array('title','editor','thumbnail','custom-fields','excerpt','author','trackbacks','comments','revisions','page-attributes'), ) ); //カスタムタクソノミー(カテゴリ形式) register_taxonomy( 'case_detail', 'case_detail', array( 'label' => 'カテゴリ', 'hierarchical' => true, ) );
★固定ページに一覧ページを作成(page-case.php)。カスタム投稿のループを記述し、一覧表示。
'case_detail', //カスタム投稿タイプ(case_detail)を出力 'posts_per_page' => 8, //8件表示されたらページング処理 'paged' => get_query_var( 'paged' ), //ページングする際に必要な記述 ); ?> ここに内容を記述。
これで基本的にはページング処理ができます。
この記述でも動かないときは、DBのほうに問題があると思われます。
phpMyAdminにログインし、「wp_term_taxonomy」を見てみる。
次にデータベースを見てみます。
「wp_tarm_taxonomy」と項目がありますので、ここを見てみます。
動かないときに、タクソノミーIDを変更したりすると、ここに追加されていき、名前が重複したりしてバグるようです。まずこのあたりの記述を削除します。
カスタム投稿タイプのインデックスを作成する。
次に、「wp_term_taxonomy」メニューのツリーになっている部分に「New」をクリックし、インデックスを追加し、「case_detail」とします。
カラムの内容も下記のように設定します。
WP管理画面のパーマリンク設定を変更する。
最後に、パーマリンクの末尾の「/」を外すと、ページングができるようになりました!