sisir
  • 0
Эксперт

Предварительно получить сообщения об изменении запроса

  • 0

мне нужно изменить сообщения на странице taxonomy.php. У меня есть meta_key, который я хочу сравнить с мета-значением. Но в настоящее время мой код ничего не возвращает. Я уверен, что что-то упускаю. Пожалуйста, дайте мне знать, что я делаю неправильно!

add_action('pre_get_posts', 'add_event_date_criteria');
function add_event_date_criteria(&$query)
{
    // We only want to filter on "public" pages
    // You can add other selections, like here:
    //  - Only on a term page for our custom taxonomy
    if (!is_admin() &&
        is_tax('event-tag') || is_tax('event-category')) {
        $query->set('meta_key', 'start_time');
        $query->set('meta_compare', '>=');
        $query->set('meta_value', time());
        $query->set('meta_key', 'start_time');
        $query->set('orderby', 'meta_value_num');
        $query->set('order', 'ASC');
    }

}
Share
  1. Попробуйте использовать параметр meta_query:

    add_action('pre_get_posts', 'add_event_date_criteria');
    function add_event_date_criteria(&$query)
    {
        // We only want to filter on "public" pages
        // You can add other selections, like here:
        //  - Only on a term page for our custom taxonomy
        if (!is_admin() &&
            is_tax('event-tag') || is_tax('event-category')) {
            $time = time();
            $meta = array(
                array(
                'key' => 'start_time',
                'value' => $time,
                'compare' => '>='
                )
            );
            $query->set('meta_query',$meta );
            $query->set('meta_key', 'start_time');
            $query->set('orderby', 'meta_value_num');
            $query->set('order', 'ASC');
        }
    }
    

    также вам необходимо убедиться, что ваше метаполе start_time измерено и сохранено в количестве секунд, начиная с Unix Epoch, например функция time().

    • 0

Оставить ответ

You must login to add an answer.