簡體   English   中英

帶有帖子和自定義字段的 Wordpress 搜索

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM