WordPress: Сортировка сообщений в хронологическом порядке по пользовательскому полю

#wordpress #date #field

#wordpress #Дата #поле

Вопрос:

У меня есть несколько сообщений, используемых в качестве событий, с пользовательским полем для даты события. Я ищу упорядочение этих сообщений по дате события (в хронологическом порядке). Мне интересно:

  • Возможно ли установить пользовательское поле даты события в формате «дата» (на данный момент это простой тип = текст).
  • Как упорядочить эти сообщения, если я всегда использую один и тот же формат (например, дд / мм / гггг). Мне нужно получить 3 ближайших события (не последние 3).

Есть ли в WordPress встроенная функция, которая могла бы сравнивать дату с сегодняшней датой?

Спасибо

Ответ №1:

Я только что сделал это! (www.wherewordsgo.com )

хорошо, у меня это работает только для «страниц», но.

но если вы создадите мета-поле для «крайнего срока», а затем поместите дату в формате гггг / мм / дд и добавите это в свой functions.php это может помочь:

add_action(‘wp’, ‘check_page’); функция check_page () { if (is_page()) { add_filter(‘get_previous_post_sort’, ‘sort_it’); add_filter(‘get_next_post_sort’, ‘sort_it’); add_filter(‘posts_orderby’, ‘sort_it’); add_filter(‘posts_join’, ‘ join_it’ ); add_filter(‘posts_where’, ‘where_it’ );

     function sort_it () {
        global $wpdb;

        return " $wpdb->postmeta.meta_value ASC ";
    }

    function join_it( $join ) {
        global $wpdb;

        $join .= " LEFT JOIN $wpdb->postmeta ON($wpdb->posts.ID = $wpdb->postmeta.post_id) ";

      return $join;
    }

    function where_it( $where ) {
        global $wpdb;
        $where .= "AND $wpdb->postmeta.meta_key = 'deadline' ";

      return $where;
    }
}
  

Я получил это с какого-то сайта (ссылку на который я потерял… большой WP чувак, хотя я думаю) и изменил его по мере необходимости. Как я уже сказал, это работает только для пользовательских страниц в моей сборке (я использую пользовательский тип), но вполне может работать для всего, если вы измените функцию ‘is_page ()’ в начале на то, что является относительным для вас.

Надеюсь, это поможет