Intereting Posts
Пользовательский шаблон таксономии не работает с простым циклом. Несколько CPT с использованием той же таксономии Добавить контент на страницу без коротких кодов Как передать переменные в аргумент функции, используя add_action Рекомендации по категоризации для настраиваемого типа сообщений Отображение сообщений исключительно в их категории (не родительских) Тематическая локализация «слизней» (пользовательские типы сообщений, таксономии) Какой файл является стандартной главной страницей, в которой перечислены все сообщения? Форматы стиля TinyMCE для разных типов сообщений Как добавить в названии дату, но с другим цветом, например, в названиях iMDb? WP-CLI бросает PHP Неустранимая ошибка: вызов неопределенной функции apply_filters () WordPress установлен в подкаталоге Как конвертировать выбранный код в HTML с тегами PHP внутри него Как создать персонализированный тип сообщения, который содержит другой настраиваемый тип сообщения? Дополнительные страницы и типы сообщений Использование depth = n в wp_list_pages

Сортировка и фильтрация пользовательских сообщений типа сообщений по пользовательской таксономии

У меня вопрос как новичок в wordpress. Поэтому для моих небольших знаний в области кодирования я подошел к точке, где я не знаю выхода. Я просмотрел весь SE, но, похоже, ни одна другая нить не соответствует моему вопросу. Моя цель: я нахожусь на странице:

http://example.com/issue/1985-02/ 

Я хочу перечислить ТОЛЬКО сообщения для таксономии «issue»-slug, здесь «1985-02», и сортировать сообщения, затем на странице по пользовательской таксономии «номер продукта», которая находится в сообщениях – в порядке возрастания.

Я догадался, что либо номер продукта сортирует все сообщения, но все слизки из «проблемы» отображаются (не фильтруются для одного слипа «1985-02», как я хочу). Или конкретный пул моего поиска отфильтровывается – но сообщения не сортируются по номеру продукта каждого сообщения. Это помогло мне: https://gist.github.com/kopepasah/3132619

Другое дело: реализация разбиения на страницы не работает.

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

Большое вам спасибо за вашу помощь! Я ценю каждый ответ 🙂


Вот код таксономии-issue.php

При этом «номер продукта» сортируется красиво, но не проблема фильтруется:

 <?php get_header(); ?> <section id="primary" class="content-area"> <div id="content" class="site-content" role="main"> <header class="archive-header"> <h1 class="archive-title"><?php printf( __( 'issue: %s', 'twentyfourteen' ), single_cat_title( '', false ) ); ?></h1> <?php // Show an optional term description. $term_description = term_description(); if ( ! empty( $term_description ) ) : printf( '<div class="taxonomy-description">%s</div>', $term_description ); endif; ?> </header><?php $args = array( 'tax_query' => array( array( 'taxonomy' => 'issue', 'field' => 'slug', 'terms' => array( 'term1' ) ), ), 'post_type' => 'product' ); $query = new WP_Query( $args ); if ( have_posts() ) { $term = $query->queried_object; while ( have_posts() ) : the_post(); //Output what you want endwhile; } global $post; $taxonomies = get_terms( 'productnumber', array( 'order' => 'ASC' ) ); foreach ( $taxonomies as $taxonomy ) { echo '<div id="' . $taxonomy->slug . '">'; $args = array( 'tax_query' => array( array( 'taxonomy' => $taxonomy->taxonomy, 'field' => 'slug', 'terms' => array( $taxonomy->slug ), 'orderby'=> 'productnumber', ) ) ); query_posts( $args ); if ( have_posts() ) : while ( have_posts() ) : the_post(); get_template_part( 'content', get_post_format() ); endwhile; twentyfourteen_paging_nav(); endif; wp_reset_query(); echo '</div>'; } // end foreach ?> </div><!-- #content --> </section><!-- #primary --> <?php get_sidebar( 'content' ); get_sidebar(); get_footer(); 

И с этим «проблема» фильтруется, но не сортируется по номеру продукта:

 <?php get_header(); ?> <section id="primary" class="content-area"> <div id="content" class="site-content" role="main"> <header class="archive-header"> <h1 class="archive-title"><?php printf( __( 'issue: %s', 'twentyfourteen' ), single_cat_title( '', false ) ); ?></h1> <?php // Show an optional term description. $term_description = term_description(); if ( ! empty( $term_description ) ) : printf( '<div class="taxonomy-description">%s</div>', $term_description ); endif; ?> </header> <?php $args = array( 'tax_query' => array( array( 'taxonomy' => 'issue', 'field' => 'slug', 'terms' => array( 'term1' ) ), ), 'post_type' => 'product' ); $query = new WP_Query( $args ); if ( have_posts() ) { $term = $query->queried_object; echo 'All posts found in ' . $term->name; while ( have_posts() ) : the_post(); //Output what you want the_title(); the_content(); endwhile; } global $post; $taxonomies = get_terms( 'productnumber', array( 'order' => 'ASC' ) ); foreach ( $taxonomies as $taxonomy ) { echo '<div id="' . $taxonomy->slug . '">'; $args = array( 'tax_query' => array( array( 'taxonomy' => $taxonomy->taxonomy, 'field' => 'slug', 'terms' => array( $taxonomy->slug ), 'orderby'=> 'productnumber', ) ) ); query_posts( $args ); if ( have_posts() ) : while ( have_posts() ) : the_post(); get_template_part( 'content', get_post_format() ); endwhile; twentyfourteen_paging_nav(); endif; wp_reset_query(); echo '</div>'; } // end foreach ?> </div><!-- #content --> </section><!-- #primary --> <?php get_sidebar( 'content' ); get_sidebar(); get_footer(); , <?php get_header(); ?> <section id="primary" class="content-area"> <div id="content" class="site-content" role="main"> <header class="archive-header"> <h1 class="archive-title"><?php printf( __( 'issue: %s', 'twentyfourteen' ), single_cat_title( '', false ) ); ?></h1> <?php // Show an optional term description. $term_description = term_description(); if ( ! empty( $term_description ) ) : printf( '<div class="taxonomy-description">%s</div>', $term_description ); endif; ?> </header> <?php $args = array( 'tax_query' => array( array( 'taxonomy' => 'issue', 'field' => 'slug', 'terms' => array( 'term1' ) ), ), 'post_type' => 'product' ); $query = new WP_Query( $args ); if ( have_posts() ) { $term = $query->queried_object; echo 'All posts found in ' . $term->name; while ( have_posts() ) : the_post(); //Output what you want the_title(); the_content(); endwhile; } global $post; $taxonomies = get_terms( 'productnumber', array( 'order' => 'ASC' ) ); foreach ( $taxonomies as $taxonomy ) { echo '<div id="' . $taxonomy->slug . '">'; $args = array( 'tax_query' => array( array( 'taxonomy' => $taxonomy->taxonomy, 'field' => 'slug', 'terms' => array( $taxonomy->slug ), 'orderby'=> 'productnumber', ) ) ); query_posts( $args ); if ( have_posts() ) : while ( have_posts() ) : the_post(); get_template_part( 'content', get_post_format() ); endwhile; twentyfourteen_paging_nav(); endif; wp_reset_query(); echo '</div>'; } // end foreach ?> </div><!-- #content --> </section><!-- #primary --> <?php get_sidebar( 'content' ); get_sidebar(); get_footer(); 

это фильтр в моих темах function.php

 add_filter( 'posts_clauses', 'mmx_orderby_tax_term', 10, 2 ); function mmx_orderby_tax_term( $clauses, $wp_query ) { global $wpdb; if ( isset( $wp_query->query['orderby'] ) && is_archive() && 'productnumber' == $wp_query->query['orderby'] && 'product' == $wp_query->query_vars['post_type'] ) { $clauses['join'] .= " LEFT OUTER JOIN {$wpdb->term_relationships} ON {$wpdb->posts}.ID={$wpdb->term_relationships}.object_id"; $clauses['join'] .= " LEFT OUTER JOIN {$wpdb->term_taxonomy} USING (term_taxonomy_id)"; $clauses['join'] .= " LEFT OUTER JOIN {$wpdb->terms} USING (term_id)"; $clauses['where'] .= " AND (taxonomy = 'productnumber' OR taxonomy IS NULL)"; $clauses['groupby'] = "object_id"; $clauses['orderby'] = "GROUP_CONCAT({$wpdb->terms}.name ORDER BY name ASC) "; $clauses['orderby'] .= ( 'ASC' == strtoupper( $wp_query->get('order') ) ) ? 'ASC' : 'DESC'; } return $clauses; } 

Solutions Collecting From Web of "Сортировка и фильтрация пользовательских сообщений типа сообщений по пользовательской таксономии"