Вот как я переопределяю страницу поиска WordPress для улучшения результатов благодаря Relevanssi:
global $wp_query;
$search_txt = get_query_var('s');
$args = array(
's' => $search_txt,
'post_type' => 'formations',
'posts_per_page' => 9,
'paged' => $wp_query->query_vars['paged'], // conserver le numéro de page de la requête initiale
);
// filtrer suivant la bonne taxonomy
if (isset($_GET['taxonomy'])) {
switch ($_GET['taxonomy']) {
case 'formation-diplomantes-cpf':
$ta = ['formation-diplomante', 'formation-eligible-au-cpf'];
$op = 'AND';
break;
case 'toute-formation':
break;
default:
$ta = $_GET['taxonomy'];
$op = 'IN';
}
if (isset($ta)) {
$tq = [[
'taxonomy' => 'type_form',
'field' => 'slug',
'terms' => $ta,
'operator' => $op,
]];// Tax Query
$args['tax_query'] = $tq;
}
}
$fq = new WP_Query();
$fq->parse_query( $args );
relevanssi_do_query($fq);
$any_formation = false;
$fdia = [];// Formations DIOGEN IDs Array
$fia = [];// Formations IDs Array
$i=0;
while ($fq->have_posts()) : $fq->the_post();
if ( 'formations' == get_post_type() ) {
$i++;
$fdia[get_the_ID()] = get_field('id_diogen', get_the_ID());
$fia[] = get_the_ID();
$any_formation = true;
}
endwhile;
?>
Результаты разбиты на страницы:
echo paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $fq->max_num_pages
) );
В большинстве случаев это работает хорошо:
Не работает в других:
Я понял, что разбиение на страницы моих формирований не работает, когда у меня не хватает фактических данных. То есть, скажем, у меня есть запрос, который приносит 10 формирований и 20 актуальных объектов: все работает, как ожидалось. Однако обратное не получается.
Вот как я переписываю URL-адреса, относящиеся к фактам:
function custom_rewrite_rules( $wp_rewrite ) {
$wp_rewrite->rules = array(
'actualite/page/?([0-9]{1,})/?$' => $wp_rewrite->index . '?pagename=actualite&paged=' . $wp_rewrite->preg_index( 1 ),
) + $wp_rewrite->rules;
}
add_action( 'generate_rewrite_rules', 'custom_rewrite_rules' );
Я пытался иметь префикс к поисковому URL, думая, что это может сыграть роль, но безрезультатно , Я также попытался добавить пользовательское правило перезаписи для страницы поиска, но это не оказало никакого влияния. Я все еще получаю 404 с. Я часами копал все возможные направления, но безрезультатно.
Любые предложения приветствуются. Я не понимаю, почему и пагинация образований, и актуализация связаны между собой.