簡體   English   中英

覆蓋Wordpress管理面板搜索

[英]Override Wordpress Admin Panel Search

我正在嘗試將post meta納入wordpress管理面板搜索中。 我進行了一次研究,發現可以使用“ pre_get_posts”過濾器將帖子元設置為查詢。 所以我寫了下面的代碼

 function custom_search_query( $query ) {
    if( is_admin() && $query->is_search) {
    $custom_fields = array(
        // put all the meta fields you want to search for here
        ["key" => "property-ref-code", "compare" => "LIKE"],
        ["key" => "property-status", "compare" => "="],
        ["key" => "price", "compare" => "="],
        ["key" => "rent-price", "compare" => "="],
        ["key" => "bedrooms", "compare" => "="],
    );

    $meta_query = $query->get('meta_query');

    if (empty($meta_query))
    {
        $meta_query = array();
    }
       $meta_query[] = array('relation' => 'OR');
        foreach($custom_fields as $cf) {

            $meta_query[] = array(
                'key' => $cf["key"],
                'value' => $query->query_vars['s'],
                'compare' => $cf["compare"],
            );
        }
        $query->set("meta_query", $meta_query);
   }

}
add_filter( "pre_get_posts", "custom_search_query");

該代碼現在不僅不返回任何內容,而且還破壞了wordpress搜索。 我的意思是。 如果禁用此代碼,則可以按帖子標題搜索,如果存在,它將返回一些結果。 然后,如果啟用代碼並按帖子標題搜索將不返回任何內容。 基本上,我想按價格,參考代碼等搜索屬性,這些屬性是我所做的postmeta字段。 當我搜索要搜索的屬性和給定的meta_keys時,誰能幫助我擴展wordpress搜索

謝謝

問題可能是if (empty($meta_query_args))始終返回true,因為未定義$meta_query_args 因此,將刪除搜索中的實際meta_queries。

function extend_admin_search( $query ) {

    // Extend search for document post type
    $post_type = 'document';
    // Custom fields to search for
    $custom_fields = array(
        "_file_name",
    );

    if( ! is_admin() )
        return;

    if ( $query->query['post_type'] != $post_type )
        return;

    $search_term = $query->query_vars['s'];

    // Set to empty, otherwise it won't find anything
    $query->query_vars['s'] = '';

    if ( $search_term != '' ) {
        $meta_query = array( 'relation' => 'OR' );

        foreach( $custom_fields as $custom_field ) {
            array_push( $meta_query, array(
                'key' => $custom_field,
                'value' => $search_term,
                'compare' => 'LIKE'
            ));
        }

        $query->set( 'meta_query', $meta_query );
    };
}

add_action( 'pre_get_posts', 'extend_admin_search' );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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