Пользовательский порядок типов записей для релевантности заголовков - WP_Query - PullRequest
2 голосов
/ 14 октября 2019

Я ходил кругами уже несколько недель - мне кажется, я не могу заставить свой собственный тип записи упорядочить по названию -

У меня есть пользовательский поиск с ближайшей функцией, поэтому я хочу оставить это - мой пользовательскийпост-запросы отображаются по заголовкам по релевантности WP Admin, но не спереди.

Я обнаружил код поста pre_fetch, относящийся к мета-методу, и изменил его с orderby на «date» на «title» и «DESC» на «ASC» - очищенный кеш-сервер и браузер, но все еще не радует.

Я думаю, что это должно быть действительно просто, но кажется, что ничего из того, что я изменяю, не работает - кэшировал ли SQL мои более ранние ошибочные запросы и все еще возвращает?

уже устала добавлять arg в functions.php для переопределения пост-одера, но не работает

как указано, изменили пользовательский почтовый код, чтобы попытаться вернуть запросы по заголовку ASC, а не по дате DESC, но здесь нет изменений в результатах запросалибо

/**
         * filter orderby
         */
        if (isset($_REQUEST['sortby'])
            && ( $query->is_main_query() || (isset($query->query_vars['meta_key']) && $query->query_vars['meta_key'] == 'rating_score_comment') )
        ) {
            if ($_REQUEST['sortby'] !== 'date') {
                // $query->query_vars['meta_key'] = $_REQUEST['sortby'];
                $query->set('orderby', 'meta_value_num');
            } else {

                // order by date
                $query->set('orderby', 'date');
            }

            // order desc
            $query->set('order', 'DESC');
        }
        // order by rating score
        if(isset($_REQUEST['query']['orderby']) && $_REQUEST['query']['orderby'] == 'rating_score_comment') {
            $query->set('orderby', 'meta_value_num date');
            if( !isset($_REQUEST['query']['meta_key'] ) ) {
                $query->query_vars['meta_key'] = $_REQUEST['query']['orderby'];
                $query->meta_query = array(
                     //check to see if et_featured has been filled out
                    'relation' => 'OR',
                    array(
                         //check to see if date has been filled out
                        'key' => $_REQUEST['query']['orderby'],
                        'compare' => 'BETWEEN',
                        'value' => array(
                            0,
                            5
                        )
                    ),
                    array(
                         //if no et_featured has been added show these posts too
                        'key' => $_REQUEST['query']['orderby'],
                        'value' => '',
                        'compare' => 'NOT EXISTS'
                    )
                );
            }else{
                // order by rating score for feature block
                if($_REQUEST['query']['meta_key'] == 'et_featured') {
                    $query->set('orderby', 'menu_order');
                    $query->set('meta_query' , array(
                        array(
                            'key' => 'rating_score_comment',
                            // 'value' => array(0, 5),
                            // 'compare' => 'BETWEEN'
                        ),
                        array(
                            'key' => 'et_featured',
                            'value' => '1',
                            'compare' => 'LIKE'
                        )
                    ));
                }
                if($_REQUEST['query']['meta_key'] == 'de_event_post') {
                    // order by rating score for event block
                    $query->set('orderby', 'menu_order');
                    $query->set('meta_query' , array(
                        array(
                            'key' => 'rating_score_comment',
                            'value' => array(0, 5),
                            'compare' => 'BETWEEN'
                        ),
                        array(
                            'key' => 'de_event_post',
                            'value' => '',
                            'compare' => '!=',
                            'type' => 'NUMERIC'
                        )
                    ));
                }
            }
        }
        // Orderby featured
        // if(is_search()){
        //     $query->set('meta_key', 'et_featured');
        //     $query->set('orderby', 'meta_value_num date');
        // }

        $is_search = ! (empty($_REQUEST['query']) || empty($_REQUEST['query']['s']));
        if ((et_load_mobile() && !is_single() ) && !$is_search && (isset($query->query_vars['orderby']) && $query->query_vars['orderby'] != 'rand')) {
            if (!is_author() && isset($query->query_vars['post_type']) && $query->query_vars['post_type'] == $this->post_type) {
                if(!isset($query->query_vars['near_lat']) || $query->query_vars['near_lat'] == '' ){
                    $query->set('orderby', 'meta_value_num date');
                }
                // if (isset($query->query_vars['meta_value'])) {
                //     unset($query->query_vars['meta_value']);
                // }
                $query->meta_query = array(
                     //check to see if et_featured has been filled out
                    'relation' => 'OR',
                    array(
                         //check to see if date has been filled out
                        'key' => 'et_featured',
                        'compare' => 'IN',
                        'value' => array(
                            0,
                            1
                        )
                    ) ,
                    array(
                         //if no et_featured has been added show these posts too
                        'key' => 'et_featured',
                        'value' => 1,
                        'compare' => 'NOT EXISTS'
                    )
                );
            }
        }
        return $query;
    }
    /**
     * filter order and replace menu_order by mt1.value
     * mt1.meta_value is the meta value when join with table post meta base on rating_score meta key
     * @param  String $orderby Wordpress post query orderby string
     * @return String
     *
     * @since  1.8.5
     * @author  Dakachi
     */
    function orderbyreplace($orderby) {
        global $wpdb;
        return str_replace($wpdb->posts.'.menu_order', 'mt1.meta_value+0', $orderby);
    }

    /**
     * catch event change ad status, update expired date
...