Intereting Posts
Преднамеренно превышать max_num_pages по основному запросу без получения 404? Добавить пользовательский WP_Query после первых 3 сообщений wp nav menu: добавить атрибуты в пункты меню Сделать slug как идентификационный номер для пользовательских типов сообщений можно ли получить полную запись в WordPress в RSS-ленте? Я создал WordPress с помощью xampp, и все кажется прекрасным ИСКЛЮЧЕНИЕ не вся информация есть Theme Customizer – Моя панель исчезает Есть ли плагин, который отключает другие плагины для мобильных браузеров? Внесите WordPress, темы и плагины в использование определенных размеров Преобразование комментариев в обзоры для пользовательских типов сообщений Является ли текущий номер версии версии тем, в каком кеше? Загрузите веб-модуль (html и JS) в wordpress Уведомление администратора не отображается Позвольте пользователям загружать изображения (ы) в сообщение из внешнего интерфейса Как удалить базу данных без использования какого-либо плагина?

Как сортировать таблицу пользовательских сообщений по столбцу, содержащему настраиваемое поле

У меня есть пользовательский тип post, называемый laptop с настраиваемыми полями, такими как CPU , OS , RAM и т. Д., Созданный с использованием плагина Advanced Custom Fields .

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

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

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

Я бы очень признателен за помощь в создании URL-адресов для обхода имени настраиваемого поля в каждом элементе TH .

Solutions Collecting From Web of "Как сортировать таблицу пользовательских сообщений по столбцу, содержащему настраиваемое поле"

Чтобы следить за комментарием @ rock3t, действительно ли вам нужно запрашивать бэкэнд всякий раз, когда пользователь нажимает на заголовок столбца?

Вы изучали использование jQuery tablesorter ? Он позволяет конечному пользователю сортировать таблицу HTML, выполняя манипуляции с DOM.

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

tablesorter не является одним из плагинов jQuery, включенных в WP Core. Таким образом, вам нужно будет загрузить его (из приведенной выше ссылки), включить его в свой плагин / тему где-нибудь и поставить в очередь. Затем вставьте простой JS-файл, который хотел бы что-то вроде:

 (function ($) { $(document).ready (function () { $('#id_of_your_table').tablesorter ({widgets: ['zebra']}) ; }) ; })(jQuery) ; 

Вы можете узнать больше о том, как использовать tablesort в своих документах , в том числе различные другие функции для tablesorter() .

Простой с этой ссылкой: https://codex.wordpress.org/Class_Reference/WP_Query

orderby должен быть meta_value

'meta_value' – Обратите внимание, что в запросе также должно присутствовать «meta_key = keyname».

Ваше ключевое имя должно быть одним из следующих: CPU, OS, RAM …

Также вы можете рассмотреть класс WP_Meta_Query . https://codex.wordpress.org/Class_Reference/WP_Meta_Query


Обновление


Я получил этот результат

  Array ( [0] => WP_Post Object ( [ID] => 3233 [post_author] => 1 [post_date] => 2016-11-19 12:51:43 [post_date_gmt] => 2016-11-19 12:51:43 [post_content] => abc [post_title] => Mac Air Pro 9G [post_excerpt] => [post_status] => publish [comment_status] => closed [ping_status] => closed [post_password] => [post_name] => mac-air-pro-3 [to_ping] => [pinged] => [post_modified] => 2016-11-19 12:52:19 [post_modified_gmt] => 2016-11-19 12:52:19 [post_content_filtered] => [post_parent] => 0 [guid] => http://steve.com/laptop/mac-air-pro-1-copy/ [menu_order] => 0 [post_type] => laptop [post_mime_type] => [comment_count] => 0 [filter] => raw ) [1] => WP_Post Object ( [ID] => 3232 [post_author] => 1 [post_date] => 2016-11-19 12:46:50 [post_date_gmt] => 2016-11-19 12:46:50 [post_content] => abc [post_title] => Mac Air Pro 8G [post_excerpt] => [post_status] => publish [comment_status] => closed [ping_status] => closed [post_password] => [post_name] => mac-air-pro-2 [to_ping] => [pinged] => [post_modified] => 2016-11-19 12:52:47 [post_modified_gmt] => 2016-11-19 12:52:47 [post_content_filtered] => [post_parent] => 0 [guid] => http://steve.com/laptop/mac-air-pro-1-copy/ [menu_order] => 0 [post_type] => laptop [post_mime_type] => [comment_count] => 0 [filter] => raw ) [2] => WP_Post Object ( [ID] => 3231 [post_author] => 1 [post_date] => 2016-11-19 12:12:38 [post_date_gmt] => 2016-11-19 12:12:38 [post_content] => abc [post_title] => Mac Air Pro 4G [post_excerpt] => [post_status] => publish [comment_status] => closed [ping_status] => closed [post_password] => [post_name] => mac-air-pro-1 [to_ping] => [pinged] => [post_modified] => 2016-11-19 12:52:57 [post_modified_gmt] => 2016-11-19 12:52:57 [post_content_filtered] => [post_parent] => 0 [guid] => http://steve.com/?post_type=laptop&p=3231 [menu_order] => 0 [post_type] => laptop [post_mime_type] => [comment_count] => 0 [filter] => raw ) ) 

Вот содержание файла single-laptop.php:

 <?php /** * The template for displaying all single posts. * * @link https://developer.wordpress.org/themes/basics/template-hierarchy/#single-post * * @package microformats */ get_header(); // WP_Query arguments $args = array ( 'post_type' => array( 'laptop' ), 'post_status' => array( 'published' ), //'s' => 'atom', // only if you need that 'nopaging' => true, 'posts_per_page' => '-1', 'ignore_sticky_posts' => true, // order 'orderby' => 'meta_value', 'meta_key' => 'ram', 'order' =>'DESC', /* you will need this only if 'meta_query' => array( array( 'key' => 'ram', // or os, or cpu 'value' => '4', // meaning 4G of ram 'compare' => '>', // meaning only biggar 'type' => 'NUMERIC', ), ), */ ); // The Query $query = new WP_Query( $args ); print_r($query->posts); ?> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <?php while ( have_posts() ) : the_post(); ?> <?php get_template_part( 'template-parts/content', 'single' ); ?> <?php // If comments are open or we have at least one comment, load up the comment template. if ( comments_open() || get_comments_number() ) : comments_template(); endif; ?> <hr class="fat" /> <?php endwhile; // End of the loop. ?> </main><!-- #main --> </div><!-- #primary --> <?php get_sidebar(); ?> <?php get_footer(); ?>