Intereting Posts
Неправильно ли размещать теги заголовков во вкладках справки WordPress? Не удается удалить архивы и мета с боковой панели Как WordPress обрабатывает ошибки блокировки строк MySQL? Прикреплять изображения к сообщениям с помощью настраиваемых полей (только пути к уже загруженным изображениям) Как создать текст – новый шаблон страницы Нужна помощь с пользовательскими типами сообщений и таксономиями $ wpdb-> update не обновляет поле в базе данных wp_get_object_terms (): считать относительно переданных идентификаторов? Как получить URL-адрес изображения только на the_post_thumbnail Я хотел бы знать, если есть простые решения для интеграции других CMS в wordpress Как я могу настроить возможности WordPress list_users? Query_posts $ query_string Мой поддомен на WordPress Multisite прошел WooCommerce – поиск клиентов AJAX очень медленный Добавление функции от родительской темы к дочерней теме

Порядок сортировки для пользовательского запроса в архиве типа сообщения не работает

У меня есть настраиваемый тип сообщений для настроенных событий, и я показываю сообщения в архиве пользовательского типа «archive-events.php».

Я использую Advanced Custom Fields, чтобы поместить дату события «event_date» в каждый пост, выбранный пользователем. Дата выводится в формате «yyyymmdd»: «20141129».

У меня есть настройка так, чтобы, если дата события больше двух дней, она не появляется; скрывая события, которые прошли. Эта функция работает правильно.

Проблема в том, что по какой-то причине я не могу изменить порядок сортировки сообщений . Я хочу заказать события, чтобы первая дата была первой, чтобы люди знали, какие события подходят. Поэтому я буду заказывать сообщения с помощью «event_date» .

Я потратил три часа на подобные проблемы и попытался реализовать их код безрезультатно. Я пробовал код на других страницах и архивах в простых формах, и он тоже не работает. Я дошел до точки, где кажется, что настраиваемый тип сообщения – это проблема не запроса .

Я чувствую, что мне не хватает части моего вопроса, потому что все остальные получают правильные ответы, но ни один из них не решает мою проблему.

Я включил некоторые мои ссылки в код для построения запроса.

ОБНОВЛЕНИЕ: я обнаружил, что код действительно работает, когда я делаю тот же самый тип сообщения, но называю это «событие» вместо «событий». Есть ли причина, почему это может быть так? Я просматривал базу данных, чтобы увидеть, могу ли я обнаружить проблему, и я не могу найти ничего подозрительного.

В элементе wp_postmeta – meta_key есть запись: meta_value: a:5{s:5:"param";s:9:"post_type";s:8:"operator";s:2:"==";s:5:"value";s:6:"events";s:8:"order_no";i:0;s:8:"group_no";i:0;}

Это может быть проблемой, но я попытался удалить эту строку, и ничего не изменилось.

Внутри archive-events.php

 <?php // http://www.advancedcustomfields.com/resources/filter-posts-by-custom-fields/ // See also: http://www.smashingmagazine.com/2009/06/10/10-useful-wordpress-loop-hacks/ // See also: http://wordpress.org/support/topic/query_posts-less-than-6-months-old // Show posts between now and X months ago. // http://thewichitacomputerguy.com/blog/php-date-datecreate-strtotime-options // http://codex.wordpress.org/Class_Reference/WP_Meta_Query // Clue: We are trying to order posts on a an archive page here. // https://wordpress.stackexchange.com/questions/167441/ascending-order-custom-post-type /* These queries check to see if the event date has come. If the date more than two days ago it moves it into the past events section. This may need to change depening on how long some events go for. This algorithm assumes events only go for a day but it's possible an event could go for a month. */ // Get the date from two days ago. $date_1 = date('Ymd', strtotime("2 days ago")); $args = array( 'post_type' => 'events', 'posts_per_page' => -1, 'meta_key' => 'event_date', 'orderby' => 'meta_value_num', 'order' => 'ASC', // This line ignores plugin ordering. 'suppress_filters' => true, 'meta_query' => array( array( // Is the event less then two days past? 'key' => 'event_date', 'value' => $date_1, 'type' => 'numeric', 'compare' => '>' ) ) ); // query $wp_query = new WP_Query( $args ); if ( $wp_query->have_posts() ) { // loop while( $wp_query->have_posts() ) { $wp_query->the_post(); get_template_part( 'content', 'events'); } } else { // no posts found } // Reset query wp_reset_postdata(); ?> 

Внутри functions.php

 /** * Create Custom Post Type "Events". */ function lc_events_post_type() { $labels = array( 'name' => _x( 'Events', 'Post Type General Name', 'leederville-connect' ), 'singular_name' => _x( 'Event', 'Post Type Singular Name', 'leederville-connect' ), 'menu_name' => __( 'Events', 'leederville-connect' ), 'parent_item_colon' => __( 'Event:', 'leederville-connect' ), 'all_items' => __( 'All Events', 'leederville-connect' ), 'view_item' => __( 'View Event', 'leederville-connect' ), 'add_new_item' => __( 'Add New Event', 'leederville-connect' ), 'add_new' => __( 'Add New Event', 'leederville-connect' ), 'edit_item' => __( 'Edit Event', 'leederville-connect' ), 'update_item' => __( 'Update Event', 'leederville-connect' ), 'search_items' => __( 'Search Events', 'leederville-connect' ), 'not_found' => __( 'Event Not found', 'leederville-connect' ), 'not_found_in_trash' => __( 'Event Not Found in Trash', 'leederville-connect' ), ); $args = array( 'label' => __( 'events', 'leederville-connect' ), 'description' => __( 'The latest events in Leederville.', 'leederville-connect' ), 'labels' => $labels, 'supports' => array( 'title' ), 'taxonomies' => array( 'event_category' ), 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'show_in_nav_menus' => true, 'show_in_admin_bar' => true, 'menu_position' => 5, 'menu_icon' => 'dashicons-calendar', 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'capability_type' => 'post', ); register_post_type( 'events', $args ); } // Hook into the 'init' action add_action( 'init', 'lc_events_post_type', 0 ); 

Некоторые вопросы

  • порядок запросов по дате по такому типу: неправильный порядок
  • по возрастанию

Solutions Collecting From Web of "Порядок сортировки для пользовательского запроса в архиве типа сообщения не работает"

Я решил свою проблему и не имел никакого отношения к запросу, базе данных или типу сообщения.

Проблема заключалась в том, что при попытке изначально построить запрос у меня осталась функция pre_get_posts в my functions.php, которая противоречила моему запросу. Урок здесь для меня – убедиться, что я тщательно проверил ВСЕ файлы.

Код встречного счетчика:

 // Events Pre Get Posts function my_pre_get_posts( $query ) { // validate if( is_admin() ) { return $query; } if( isset($query->query_vars['post_type']) && $query->query_vars['post_type'] == 'events' ) { $query->set('orderby', 'meta_value_num'); $query->set('meta_key', 'event_date'); $query->set('order', 'DESC'); } // always return return $query; } add_action('pre_get_posts', 'my_pre_get_posts');