[英]Wordpress Search with post and custom fields
大家好,我目前正在 wordpress 中構建搜索功能,我可以搜索帖子類型,但在搜索與帖子類型相關的自定義字段時遇到問題。 這是代碼,我寧願不使用任何搜索插件或全局變量。 (除非必要)
class Search {
public function __construct() {
add_filter( 'pre_get_posts', array( $this, 'posts_filter' ) );
}
public function posts_filter( $query ) {
if ( is_admin() || ! $query->is_main_query() || ! is_search() ) {
return $query;
}
$meta_query = array(
'relation' => 'OR',
array(
'relation' => 'OR',
array(
'key' => 'book_writer',
'value' => get_search_query(),
'compare' => 'LIKE',
),
array(
'key' => 'book_isbn',
'value' => get_search_query(),
'compare' => 'LIKE',
),
),
);
$query->set('meta_query', $meta_query);
$query->set( 'post_type', 'book' );
return $query;
}
}
我不確定如何將這些自定義字段添加到 $query 中,但像這樣它只會返回帖子類型“書”(如果我傳遞正確的名稱),並且如果我搜索 ISBN 例如搜索不會'不返回任何結果。
謝謝大家
試試這個
class Search {
public function __construct() {
add_filter( 'pre_get_posts', array( $this, 'posts_filter' ) );
}
public function posts_filter( $query ) {
if ( is_admin() || ! $query->is_main_query() || ! is_search() ) {
return $query;
}
$meta_query = array(
'relation' => 'OR',
array(
'key' => 'book_writer',
'value' => $query->query['s'],
'compare' => 'LIKE',
),
array(
'key' => 'book_isbn',
'value' => $query->query['s'],
'compare' => 'LIKE',
),
);
$query->set('meta_query', $meta_query);
$query->set( 'post_type', 'book' );
return $query;
}
}
從官方文檔中,描述了 meta_query 的語法https://developer.wordpress.org/reference/classes/wp_query/#custom-field-post-meta-parameters
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.