Intereting Posts
предотвращение дублирования wp_insert_post Рекомендуемое изображение не показано и получение ошибки «Объект класса WP_Error не может быть преобразован в int» Локальная установка wordpress. Задача базы данных Тестирование запрошенного запроса в pre_get_posts Как выбрать значение по умолчанию в списке опций? Функция плагина с вложенными запросами добавление пользовательской таблицы стилей в wp-admin Пользовательская коллекция в медиа-менеджере? Как добавить опцию для настраиваемого шаблона в атрибутах страницы Показывать значение get_sub_field, если оно существует Тематический инспектор «X-Ray» Использование второго сайта в качестве промежуточной области Переключить заголовок «Сократить» И VPS, и домен изменились, но URL-адрес базы данных остался прежним, а PHPmyadmin недоступен для его изменения WordPress продолжает давать мне неправильную ссылку

Как заказать Комментарий по заголовку сообщения?

Все, что я пробовал до сих пор, не сработало. Поэтому я начал искать повсюду в течение нескольких дней, пытаясь понять, как заказать комментарии по названию должности, в которую они сделаны. (Я тоже попробовал meta_value, но, похоже, я не делал этого правильно). Я прочитал wp codex. Вот что я пытаюсь сделать комментарии сортировки по заголовку сообщения, но нет никакого названия или параметра post_title для orderby комментариев. Любая помощь будет оценена.

<?php $args = array( 'status' => 'approve', 'post_status' => 'publish', 'post_type' => 'post', 'orderby' => 'title', 'order' => 'DESC' ); $comments_query = new WP_Comment_Query; ?> 

Solutions Collecting From Web of "Как заказать Комментарий по заголовку сообщения?"

Класс WP_Comment_Query поддерживает порядок:

 'comment_agent', 'comment_approved', 'comment_author', 'comment_author_email', 'comment_author_IP', 'comment_author_url', 'comment_content', 'comment_date', 'comment_date_gmt', 'comment_ID', 'comment_karma', 'comment_parent', 'comment_post_ID', 'comment_type', 'user_id', 'comment__in', 'meta_value', 'meta_value_num', 

Есть способ настроить его с помощью фильтров, чтобы мы могли поддерживать упорядочение по заголовку сообщения:

 $args = [ 'status' => 'approve', 'post_status' => 'publish', 'post_type' => 'post', 'orderby' => '_post_title', // <-- Our custom orderby value 'order' => 'DESC' ]; $comment_query = new WP_Comment_Query( $args ); 

Простой демонстрационный плагин для поддержки заказа _post_title может быть в PHP 7:

 /** * Adjust orderby comments clause */ add_filter( 'comments_clauses', function( $clauses, \WP_Comment_Query $cq ) use ( &$wpdb ) { $qv = $cq->query_vars; $orderby = $qv['orderby'] ?? ''; $order = $qv['order'] ?? 'ASC'; if( '_post_title' === $orderby && in_array( strtoupper( $order ), [ 'ASC', 'DESC' ], true ) ) $clauses[ 'orderby' ] = " {$wpdb->posts}.post_title {$order}, {$wpdb->comments}.comment_ID {$order} "; return $clauses; }, 10, 2 ); 

а затем, чтобы таблица столбец была присоединена к таблице комментариев, мы можем установить для параметра post type сообщение «post», если оно отсутствует:

 /** * Make usre we have the posts table joined by making sure the post_type isn't empty. */ add_action( 'pre_get_comments', function( \WP_Comment_Query $cq ) { $qv = &$cq->query_vars; $orderby = $qv['orderby'] ?? ''; if( '_post_title' === $orderby && empty( $qv['post_type'] ) ) $qv['post_type'] = 'post'; } ); 

Обратите внимание, что такой запрос:

 SELECT wp_comments.comment_ID FROM wp_comments JOIN wp_posts ON wp_posts.ID = wp_comments.comment_post_ID WHERE ( comment_approved = '1' ) AND wp_posts.post_status IN ('publish') AND wp_posts.post_type IN ('post') ORDER BY wp_posts.post_title DESC, wp_comments.comment_ID DESC 

неэффективен, поскольку использует временные и filesort .

Надеюсь, вы сможете настроить его в соответствии с вашими потребностями.