@art_y10

Почему wordpress не показывает все результаты поиска (при запросе в MySQL они есть), кодировка?

Сделал поиск по кастомной таксономии. Имею такой код:

<?php $search_term = explode( ' ', get_search_query( false ) );
		global $wpdb;

		$select = "
		SELECT DISTINCT t.*, tt.*
		FROM wp_terms AS t
		LEFT JOIN wp_term_taxonomy AS tt
		ON t.term_id = tt.term_id
		LEFT JOIN wp_termmeta AS tm
		ON t.term_id = tm.term_id
		WHERE tt.taxonomy IN ('customtaxonomyname')";
		$first = true;

		foreach ( $search_term as $s ){
			if ( $first ){
				$select .= " AND (t.name LIKE '%s')";
				$string_replace[] = '%'.$wpdb->esc_like( $s ).'%';
				$first = false;
			/*}else{
				$select .= " OR (t.name LIKE '%s') OR (tm.meta_value LIKE '%s')";
				$string_replace[] = '%'. $wpdb->esc_like( $s ).'%';*/
			}
		}
		$select .= " ORDER BY t.name ASC";
		$terms = $wpdb->get_results( $wpdb->prepare( $select, $string_replace ) );
		
		if ( count($terms) > 0 ){
			foreach ( $terms as $term ) {
				if ($term->taxonomy == 'customtaxonomyname') {
				//var_dump($search_term);
				echo '<article id="post-" class="attachment type-attachment status-inherit hentry">';
				echo '<header class="entry-header"><h2 class="entry-title"><a href="'.esc_url( get_term_link( $term ) ).'" title="'.esc_attr( $term->name ).'" rel="bookmark">' . esc_html( $term->name ) . '</a></h2><div class="entry-meta"></div></header>';
				echo '<div class="entry-summary"></div><footer class="entry-footer"></footer></article>';
				}
			}
			
		} ?>

Если задаю одно слово в поиске (которое заведомо есть в названиях таксономий) - показывает результаты. Задаю другое (которое тоже есть) - не показывает результаты.
При этом, если прогоняю запрос напрямую в базе - результаты которые не показывает ворпресс, после запроса к базе phpmyadmin показывает.

Кодировка таблиц utf8mb4_unicode_520_ci.
В конфиге вордпресса:
/** Database Charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8mb4' );

/** The Database Collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', 'utf8mb4_unicode_520_ci' ); - /* тут пробовал и пустое значение - все равно показывает не все результаты поиска*/


Кодировка в html-страницах - просто utf-8. Знаю, что с определенной версии кодировка БД вордпресса должна быть utf8mb4_unicode_520_ci. Что ему не нравится, куда смотреть?
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы