Сделал поиск по кастомной таксономии. Имею такой код:
<?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. Что ему не нравится, куда смотреть?