自分のウェブサイトでカテゴリ別に検索したときにページを変更しようとしています。特定のカテゴリで検索していないときはページを正しく切り替えることができますが、カテゴリを検索しているときはページを切り替えることができません。
$paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;
$orderby = ( get_query_var( 'orderby' ) ) ? absint( get_query_var( 'orderby' ) ) : 'display_name';
if($_GET['search'] && !empty($_GET['search'])) {
$search = $_GET['search'];
}
if($_GET['category'] && !empty($_GET['category'])) {
$category = $_GET['category'];
}
$args = array(
'orderby' => 'Rand',
'number' => 7,
'paged' => $paged,
'search' => '*'.esc_attr( $search ).'*',
'meta_query' => array (
array(
'key' => 'organization_category_2',
'value' => $category,
'compare' => 'like'
)
)
);
$user_query = new WP_User_Query($args);
そして私のページ付けリンク:
<?php
$total_user = $user_query->total_users;
$total_pages=ceil($total_user/7);
echo paginate_links(array(
'base' => get_pagenum_link(1) . '%_%',
'format' => '?paged=%#%',
'current' => $paged,
'total' => $total_pages,
'prev_text' => 'Previous',
'next_text' => 'Next',
'type' => 'list',
));
?>
検索しようとするたびに、次のようなURLが表示されます。
https://mywebsite.ca/directory/?search&category=Government#038;category=Government&paged=2
ページネーション関数はメインのクエリとは別に動作するので、新しいクエリを作成する代わりにpre_get_posts
を使用する必要があります。
しかし、あなたはWP_User_Query
を使っているので、標準的なページ付けシステムはあなたのためには決して働きません。あなたはここで「あなた自身の」ページネーションシステムをロールし、そしてあなた自身のURLを手動で生成し、そしてURLに基づいてあなた自身でページを設定しなければならないでしょう
if( $user_query->max_num_pages > 1 ) {
$big = 999999;
echo paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, $paged ),
'total' => $user_query->max_num_pages
) );
}
これはあなたにとって役に立つかもしれません
これは公式のWordPress Codexからの例です https://codex.wordpress.org/Function_Reference/paginate_links#Example_With_a_Custom_Query
カスタムクエリの例
<?php
//Protect against arbitrary paged values
$paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;
$args = array(
'posts_per_page' => 5,
'category_name' => 'gallery',
'paged' => $paged,
);
$the_query = new WP_Query( $args );
?>
<!-- the loop etc.. -->
上記のカスタムクエリに適応したpaginate_linksパラメータの例:
<?php
$big = 999999999; // need an unlikely integer
echo paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $the_query->max_num_pages
) );
?>