WordPress: страница не найдена с Relevanssi на некоторых страницах поиска в моих результатах поиска - PullRequest
0 голосов
/ 05 марта 2020

Вот как я переопределяю страницу поиска 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 с. Я часами копал все возможные направления, но безрезультатно.

Любые предложения приветствуются. Я не понимаю, почему и пагинация образований, и актуализация связаны между собой.

1 Ответ

0 голосов
/ 06 марта 2020

Плагин polylang вызывал проблему. Отключение его решило проблему.

...