Таблица 'postmeta'
- это место, где в базе данных хранятся все данные произвольных полей. По умолчанию функция поиска WordPress настроена на поиск только в таблице 'posts'
. Чтобы включить данные пользовательских полей в наш поиск, нам сначала нужно выполнить левое объединение (лефт джоин) таблиц 'posts'
и 'postmeta'
в базе данных.
/**
* Join posts and postmeta tables
*
* http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_join
*/
function cf_search_join( $join ) {
global $wpdb;
if ( is_search() ) {
$join .=' LEFT JOIN '.$wpdb->postmeta. ' ON '. $wpdb->posts . '.ID = ' . $wpdb->postmeta . '.post_id ';
}
return $join;
}
add_filter('posts_join', 'cf_search_join' );