私もこの2,3日 同様の内容でハマってしまい、こちらにたどり着きました。ググった情報からソースつぎはぎしていたら質問者様のソースコードとほぼ同じ状態になっていました笑
タクソノミー(ターム?)の記事一覧ページのページネーションのリンクは'format' => '?page=%#%' ,であれば問題なく表示されるが、
ページャーのcurrent(現在地のページを色変えるためのclassやタグ)がページ移動しても1のままだったり、
質問者さまが試された、自作タイプのぺージャーだと/page/2/のリンクから変える方法なんて分かるはずもなく、、
パーマリンク見直せなど様々な情報みて試しましたがもうタクソノミー一覧ページへのページャー設置は諦めようと思っていました。
そんなところこちらの質問から他の似た質問を見て他の回答者さんが「pre_get_posts」を使えばいいのでは?という書き込みから解決に至りました。
もちろん「pre_get_posts」のことなど初めて聞いた、解決した今も意味も理解できていない初心者です。かなり前の質問に申し訳ないですがアクセス数も多かったので私と同じくらいの初心者の方に参考にもなればと思い書き込みます。
初心者ですのでソース不備あるかもなのと、プラグインなど環境によっては挙動が違うかもしれませんのでご了承ください。
流れがわかったほうが良いと思い、順を追って記載していきます。
●WP本体のブログ以外に「スタッフブログ」を作成
サイドバーやページャーなど、本体ブログとまったく同じようなものに。が先方希望
私の場合は
・カスタム投稿名→スタッフブログ(スラッグ staffblog )
・タクソノミー名→ カテゴリー(スラッグ staffblog_cat )
・ターム → 「日記」「お知らせ」など動的に追加・編集・削除
プラグインCustom Post Type UIで
1.カスタム投稿「スタッフブログ(スラッグは staffblog )」を作成
2.その中にタクソノミー「カテゴリー(スラッグは staffblog_cat )」を作成
3.カスタム投稿「スタッフブログ」>「カテゴリー」メニューでターム(カテゴリ的なもの)となる「日記」「お知らせ」を作成
Custom Post Type UIでの作り方は下記あたりを参考にしました
・カスタム投稿を作成「Custom Post Type UI」
https://jobtech.jp/wp/1834/
・カスタム投稿に新しいカテゴリーを作成
https://jobtech.jp/wp/1862/
●タクソノミー一覧表示用のテンプレートは質問者様同様
taxonomy-(タクソノミー名).php(私の場合はtaxonomy-staffblog_cat.php)で作成し、
<?php if(have_posts()): ?>
<?php while(have_posts()): the_post(); ?>
<!--ループ部分ご自由に -->
<article class="post">
<a href="<?php the_permalink(); ?>">
<h2 class="tit"><?php the_title(); ?></h2>
<div class="text">
<p class="ph flexImg"><img src="<?php echo catch_that_image(); ?>" alt="<?php the_title(); ?>" /></p>
<p class="read"><?php echo mb_substr(strip_tags($post-> post_content),0,120).'...'; ?></p>
</div>
<p class="date">投稿日:<?php the_time('Y年m月d日'); ?></p>
</a>
</article><!-- / post -->
<!--ループ部分ご自由に -->
<?php endwhile; ?>
<?php
// ページャー
if ( function_exists( 'pagination' ) ) :
pagination( $wp_query->max_num_pages, get_query_var( 'paged' ) );
endif;
?>
<?php endif; wp_reset_postdata();?>
と記述
●ページャー(ページネーション)は下記サイトを参考に「関数本体のコード」を
https://wemo.tech/978#index_id0
function.phpに
<?php
?>
で囲んでコピペします。
●「pre_get_posts」の設定(上記タクソノミー一覧表示用のテンプレートページに表示する内容)をfunction.phpに記述します。
<?php
// --------------------------------------------------
// カスタムタクソノミー>タームの一覧表示
// --------------------------------------------------
function tax_loop($query) {
if (is_admin() || ! $query->is_main_query()) {
return;
}
if ($query->is_tax()) {
$query->set('post_type', '※変える所 (カスタム投稿名)を記載 私のばあい staffblog ');
$query->set('posts_per_page', 5); // 1ページのページ数 WordPress設定の表示数もこの数値に合わせたほうが良さげ
$tax_query = array(
array(
'taxonomy' => '※変える所 (タクソノミー名)を記載 私のばあい staffblog_cat', //タクソノミー
'field' => 'slug',
'terms' => array('test'), // タームが動的なので全タームを対象にするやりかたが分からなかったのでターム(カテゴリ的なもの)testを下記'operator' => 'NOT IN'
'operator' => 'NOT IN' // で除外することで、それ以外のターム(カテゴリ的なもの)は自動的に選ばれることになったぽいです、testカテゴリ作ったとしても非表示だと思うので一石二鳥
)
);
$query->set('tax_query' , $tax_query);
}
}
add_action('pre_get_posts', 'tax_loop');
?>
●パーマリンクはプラグインなし
~/%postname%/
で設定
以下は1つのWordpressで本体ブログとほぼ同じ機能のもうひとつのブログ作成する際のその他のことです。
同じ境遇の方いらしたらご参考まで、、
●サイドバーをカスタム投稿用に変える
1.function.phpに下記を記載して、サイドバーを複数つくります
<?php
if ( function_exists('register_sidebar') ) {
register_sidebar(array(
'name' => 'サイドバー1',
'id' => 'sidebar-1',
'description' => 'デフォルトブログ用',
'class' => 's1',
));
register_sidebar(array(
'name' => 'サイドバー2',
'id' => 'sidebar-2',
'description' => 'カスタム投稿(スタッフブログ用)',
'class' => 's2',
));
}
?>
2.プラグインCustom Post Type Widgetsを入れます。
https://blog.thingslabo.com/archives/000404.html
使い方はググりました。
3.カスタム投稿用サイドバーテンプレートを作成
sidebar-(カスタム投稿名).php(私の場合は sidebar-staffblog.php )でテンプレート作成して、
下記を記載
<?php if ( is_active_sidebar( 'sidebar-2' ) ) : ?> // sidebar-2は上記function.phpで設定したidを指定
<div id="sideNav"> // ←ご自由に
<?php dynamic_sidebar( 'sidebar-2' ); ?> // sidebar-2は上記function.phpで設定したidを指定
</div> // ←ご自由に
<?php endif; ?>
4.カスタム投稿用の各種テンプレートのサイドナビ配置したい場所に
<?php get_sidebar('※変える所 (カスタム投稿名)を記載 私のばあい staffblog '); ?>
を記載します。対象となるテンプレート、基本としては
・archive-(カスタム投稿名).php (私の場合 archive-staffblog.php)
・single-(カスタム投稿名).php(私の場合 single-staffblog.php)
・search-(カスタム投稿名).php(私の場合 search-staffblog.php)
・taxonomy-(タクソノミー名).php(私の場合 taxonomy-staffblog_cat.php)
ですかね
5.サイドバーの年・月・日付系アーカイブのパーマリンクを一発で解決してくれそうな下記プラグインも入れました。
Custom Post Type Rewrite
入れるだけでページャーも正常に機能しました。
●カスタム投稿用サイドバーの検索からの結果用のテンプレートを変える
参考URL
https://techmemo.biz/wordpress/post-type-search-template/
1.function.phpに下記を記載
<?php
function custom_search_template($template){
if ( is_search() ){
$post_types = get_query_var('post_type');
foreach ( (array) $post_types as $post_type )
$templates[] = "search-{$post_type}.php";
$templates[] = 'search.php';
$template = get_query_template('search',$templates);
}
return $template;
}
add_filter('template_include','custom_search_template');
?>
2.カスタム投稿のみの検索結果表示用テンプレートを作成
search-(カスタム投稿名).php(私の場合は search-staffblog.php )でテンプレート作成して、
一覧表示ループさせるように下記記載(タクソノミー一覧表示用のテンプレートの内容とほぼおなし)
<?php if(have_posts()): ?>
<?php while(have_posts()): the_post(); ?>
<!--ループ部分ご自由に -->
<article class="post">
<a href="<?php the_permalink(); ?>">
<h2 class="tit"><?php the_title(); ?></h2>
<div class="text">
<p class="ph flexImg"><img src="<?php echo catch_that_image(); ?>" alt="<?php the_title(); ?>" /></p>
<p class="read"><?php echo mb_substr(strip_tags($post-> post_content),0,120).'...'; ?></p>
</div>
<p class="date">投稿日:<?php the_time('Y年m月d日'); ?></p>
</a>
</article><!-- / post -->
<!--ループ部分ご自由に -->
<?php endwhile; ?>
<?php
// ページャー
if ( function_exists( 'pagination' ) ) :
pagination( $wp_query->max_num_pages, get_query_var( 'paged' ) );
endif;
?>
<?php else : ?>
検索結果がありません。
<?php endif; ?>
●カスタム投稿のカテゴリ(ターム)のデフォルト設定
参考URL
https://takayakondo.com/term-automatic-check/
<?php
function term_automatic_check($post_ID) {
global $wpdb;
$curTerm = wp_get_object_terms($post_ID, 'staffblog_cat');
if (0 == count($curTerm)) {
$defaultTerm= array(日記);
wp_set_object_terms($post_ID, $defaultTerm, 'staffblog_cat');
}
}
add_action('publish_staffblog', 'term_automatic_check');
?>
●その他
例えば
・ブログは院長先生のみ投稿
・スタッフブログはスタッフのみ投稿
のようにユーザーを分けたら、下記のプラグインもいいかと思います。(他のやり方もあるでしょうが、、)
User Admin Simplifier → ユーザーごとに管理ページ内に表示するメニューを変える、スタッフブログにはwp本体ブログメニューを非表示
WP Users Media → ログインしたユーザーがアップしたメディア(画像等)以外を非表示
前述とおり初心者ですのでソース不備多々あるとおもいますので自己責任にてm(_ _)m
カスタムタクソノミータームをアーカイブ的に一覧表示して、ページネーション(ページャー)を設置した所でpage/2のリンクがかなりハマったので他の方も参考になれば幸いです。
私の環境では今日も問題なく動いてます。ながなが失礼しました