Как мне запросить пользовательский тип сообщения с пользовательской таксономией?
5 ответ
- голосов
-
- 2013-02-07
Прежде всего никогда не используйте
query_posts()
,подробнее об этом читайте здесь: Когда следует использовать WP_Query vs query_posts () vsget_posts ()? .Вы должны использовать
WP_Query
,чтобы получать сообщения,которые вам нужны. Прочтите документацию по нему. В вашем случае запрос может быть таким:$the_query = new WP_Query( array( 'post_type' => 'Adverts', 'tax_query' => array( array ( 'taxonomy' => 'advert_tag', 'field' => 'slug', 'terms' => 'politics', ) ), ) ); while ( $the_query->have_posts() ) : $the_query->the_post(); // Show Posts ... endwhile; /* Restore original Post Data * NB: Because we are using new WP_Query we aren't stomping on the * original $wp_query and it does not need to be reset. */ wp_reset_postdata();
Firs of all don't use
query_posts()
ever, read more about it here: When should you use WP_Query vs query_posts() vs get_posts()?.You have to use
WP_Query
to fetch posts what you need. Read documentation for it. In your case the query could be like this:$the_query = new WP_Query( array( 'post_type' => 'Adverts', 'tax_query' => array( array ( 'taxonomy' => 'advert_tag', 'field' => 'slug', 'terms' => 'politics', ) ), ) ); while ( $the_query->have_posts() ) : $the_query->the_post(); // Show Posts ... endwhile; /* Restore original Post Data * NB: Because we are using new WP_Query we aren't stomping on the * original $wp_query and it does not need to be reset. */ wp_reset_postdata();
-
Просто заметил,что он,кажется,вытаскивает все сообщения с настраиваемым типом сообщения «Реклама».Однако,похоже,это работает: $the_query=новый WP_Query (массив ( 'post_type'=> 'Объявления', 'ad_tag'=> 'политика' ));Just noticed that it seems to pull all posts with the custom post type 'Adverts'. However this seems to do the job: $the_query = new WP_Query( array( 'post_type' => 'Adverts', 'advert_tag' => 'politics' ));
- 2
- 2013-02-07
- Stephen
-
@Stephen {tax} устарел с версии 3.1 в пользу {tax_query} и был представлен {tax_query}.это все еще работает,но мы не должны использовать устаревшие функции. tax_query используется с массивом запросов таксономии.Я работал над типом Custom Post FAQs,и он работал у меня почти так же,как аргумент slug таксономии {tax} в WP_Query.@Stephen {tax} was deprecated since version 3.1 in favor of {tax_query} and {tax_query} was introduced. this still works but we should not use the deprecated functions. tax_query is used with an array of taxonomy queries. i was working on FAQs Custom Post type and it worked for me pretty much the same way as {tax} taxonomy slug argument in WP_Query does.
- 0
- 2015-11-19
- Aamer Shahzad
-
- 2015-11-19
Я использую этот запрос для получения настраиваемых сообщений (часто задаваемых вопросов) с его настраиваемой таксономией (faq_category).поскольку параметр {taxonomy} в аргументах WP_Query устарел с версии 3.1 и введен {tax_query}.ниже приведен код,который отлично работает.
$query = new WP_Query( array( 'post_type' => 'faqs', // name of post type. 'tax_query' => array( array( 'taxonomy' => 'faq_category', // taxonomy name 'field' => 'term_id', // term_id, slug or name 'terms' => 48, // term id, term slug or term name ) ) ) ); while ( $query->have_posts() ) : $query->the_post(); // do stuff here.... endwhile; /** * reset the orignal query * we should use this to reset wp_query */ wp_reset_query();
i am using this query to fetch custom posts (FAQs Posts) with its custom taxonomy (faq_category). since {taxonomy} parameter in WP_Query args was deprecated since v.3.1 and introduced {tax_query}. below is the code that works perfectly.
$query = new WP_Query( array( 'post_type' => 'faqs', // name of post type. 'tax_query' => array( array( 'taxonomy' => 'faq_category', // taxonomy name 'field' => 'term_id', // term_id, slug or name 'terms' => 48, // term id, term slug or term name ) ) ) ); while ( $query->have_posts() ) : $query->the_post(); // do stuff here.... endwhile; /** * reset the orignal query * we should use this to reset wp_query */ wp_reset_query();
-
Это правильный ответ - принятый ответ не будет отфильтрован по таксономии,поскольку дляtax_query требуется массив массивов.Этот вложенный метод необходим для того,чтобы это работало.Спасибо за Ваш ответ )This is the correct answer - the accepted answer will not filter by taxonomy since the tax_query requires an array of arrays. This nested method is essential to getting this to work. Thanks for your answer )
- 0
- 2016-07-28
- Tom Dyer
-
да ты прав,добро пожаловать,Том Дайерyes you are right, welcome Tom Dyer
- 0
- 2016-08-18
- Aamer Shahzad
-
Да,этот также помог мне заставить работать шаблон таксономии.Спасибо!Yes, this one also helped me to get the taxonomies template to work. Thank you!
- 0
- 2018-02-16
- user3135691
-
Привет,@AamerShahzad,у меня точно такой же вопрос,и я использовал ваш ответ,но на странице нет сообщений.Вы можете мне помочь?https://stackoverflow.com/questions/55783769/how-do-i-pull-only-one-category-from-custom-post-type-in-a-templateHey @AamerShahzad I have the exact same question and I used your answer but the page is pulling no posts. Can you help me out here? https://stackoverflow.com/questions/55783769/how-do-i-pull-only-one-category-from-custom-post-type-in-a-template
- 0
- 2019-04-21
- Desi
-
- 2020-04-28
Вот код,который работает как по волшебству. Я получаю все сообщения для настраиваемогоpost_type «university_unit» с настраиваемой таксономией «unit_type» и несколькими терминами таксономии,такими как «дирекция» и «офис». Надеюсь,это поможет.
<?php $args = array( 'post_type' => 'university_unit', 'posts_per_page' => -1, 'orderby' => 'title', 'order' => 'ASC', 'tax_query' => array( array( 'taxonomy' => 'unit_type', 'field' => 'slug', 'terms' => array('directorate', 'office') ) ) ); $Query = new WP_Query($args); if($Query -> have_posts()): while($Query -> have_posts()): $Query -> the_post(); ?> <div class="cm-post-list-item"> <article> <div class="cm-post-head"> <h3 class="cm-text-blue"> <a href="<?php the_permalink(); ?>"><?php the_title();?></a> </h3> </div> <div class="cm-post-body"><?php the_excerpt();?></div> </article> </div> <?php endwhile; else: "No Administrative Offices Found. Try again later"; endif; wp_reset_postdata(); ?>
Here the code that works like magic. I am fetching all posts for the custom post_type "university_unit" with custom taxonomy "unit_type" and multiple taxonomy terms as "directorate" and "office". I hope it helps out.
<?php $args = array( 'post_type' => 'university_unit', 'posts_per_page' => -1, 'orderby' => 'title', 'order' => 'ASC', 'tax_query' => array( array( 'taxonomy' => 'unit_type', 'field' => 'slug', 'terms' => array('directorate', 'office') ) ) ); $Query = new WP_Query($args); if($Query -> have_posts()): while($Query -> have_posts()): $Query -> the_post(); ?> <div class="cm-post-list-item"> <article> <div class="cm-post-head"> <h3 class="cm-text-blue"> <a href="<?php the_permalink(); ?>"><?php the_title();?></a> </h3> </div> <div class="cm-post-body"><?php the_excerpt();?></div> </article> </div> <?php endwhile; else: "No Administrative Offices Found. Try again later"; endif; wp_reset_postdata(); ?>
-
- 2020-06-14
Это помогло мне получить все сообщения,перечисленные под каждым термином для пользовательской таксономии для CPT
<?php // Get list of all taxonomy terms -- In simple categories title $args = array( 'taxonomy' => 'project_category', 'orderby' => 'name', 'order' => 'ASC' ); $cats = get_categories($args); // For every Terms of custom taxonomy get their posts by term_id foreach($cats as $cat) { ?> <a href="<?php echo get_category_link( $cat->term_id ) ?>"> <?php echo $cat->name; ?> <br> <?php // echo $cat->term_id; ?> <br> </a> <?php // Query Arguments $args = array( 'post_type' => 'portfolio', // the post type 'tax_query' => array( array( 'taxonomy' => 'project_category', // the custom vocabulary 'field' => 'term_id', // term_id, slug or name (Define by what you want to search the below term) 'terms' => $cat->term_id, // provide the term slugs ), ), ); // The query $the_query = new WP_Query( $args ); // The Loop if ( $the_query->have_posts() ) { echo '<h2> List of posts tagged with this tag </h2>'; echo '<ul>'; $html_list_items = ''; while ( $the_query->have_posts() ) { $the_query->the_post(); $html_list_items .= '<li>'; $html_list_items .= '<a href="' . get_permalink() . '">'; $html_list_items .= get_the_title(); $html_list_items .= '</a>'; $html_list_items .= '</li>'; } echo $html_list_items; echo '</ul>'; } else { // no posts found } wp_reset_postdata(); // reset global $post; ?> <?php } ?>
This helped me to get all posts listed under each term for custom taxanomy for CPT
<?php // Get list of all taxonomy terms -- In simple categories title $args = array( 'taxonomy' => 'project_category', 'orderby' => 'name', 'order' => 'ASC' ); $cats = get_categories($args); // For every Terms of custom taxonomy get their posts by term_id foreach($cats as $cat) { ?> <a href="<?php echo get_category_link( $cat->term_id ) ?>"> <?php echo $cat->name; ?> <br> <?php // echo $cat->term_id; ?> <br> </a> <?php // Query Arguments $args = array( 'post_type' => 'portfolio', // the post type 'tax_query' => array( array( 'taxonomy' => 'project_category', // the custom vocabulary 'field' => 'term_id', // term_id, slug or name (Define by what you want to search the below term) 'terms' => $cat->term_id, // provide the term slugs ), ), ); // The query $the_query = new WP_Query( $args ); // The Loop if ( $the_query->have_posts() ) { echo '<h2> List of posts tagged with this tag </h2>'; echo '<ul>'; $html_list_items = ''; while ( $the_query->have_posts() ) { $the_query->the_post(); $html_list_items .= '<li>'; $html_list_items .= '<a href="' . get_permalink() . '">'; $html_list_items .= get_the_title(); $html_list_items .= '</a>'; $html_list_items .= '</li>'; } echo $html_list_items; echo '</ul>'; } else { // no posts found } wp_reset_postdata(); // reset global $post; ?> <?php } ?>
-
- 2018-09-26
Этот ответ больше не действителен,поскольку wordpress изменяет информацию о параметрах таксономии.пожалуйста,используйте этот способ.Это сработает.Меня устраивает."tax_query" заменяется на "tax".надеюсь,что это сработает.
$the_query = new WP_Query( array( 'post_type' => 'Adverts', 'tax' => array( array ( 'taxonomy' => 'advert_tag', 'field' => 'slug', 'terms' => 'politics', ) ), ) ); while ( $the_query->have_posts() ) : $the_query->the_post(); // Show Posts ... endwhile; /* Restore original Post Data * NB: Because we are using new WP_Query we aren't stomping on the * original $wp_query and it does not need to be reset. */ wp_reset_postdata();
This answer now is not valid anymore since wordpress changes their taxonomy parameter information. please use this way. It will work. It works for me. "tax_query" replaces with "tax". hope it will work.
$the_query = new WP_Query( array( 'post_type' => 'Adverts', 'tax' => array( array ( 'taxonomy' => 'advert_tag', 'field' => 'slug', 'terms' => 'politics', ) ), ) ); while ( $the_query->have_posts() ) : $the_query->the_post(); // Show Posts ... endwhile; /* Restore original Post Data * NB: Because we are using new WP_Query we aren't stomping on the * original $wp_query and it does not need to be reset. */ wp_reset_postdata();
-
Это полная противоположность - `tax` был старым способом,`tax_query` - текущим (v3.1 +) способом.It's the exact opposite - `tax` was the old way, `tax_query` is the current (v3.1+) way.
- 0
- 2019-01-03
- WebElaine
-
Ну,я работаю v4.5 и у меня работаетWell I am working v4.5 and it works with me
- 0
- 2019-01-05
- mamunuzaman
-
WP известен своей обратной совместимостью.Старый способ все еще работает,но он устарел,поэтому в конечном итоге он может быть удален и безопаснее использовать новый метод.WP is famous for being backwards-compatible. The old way still works, but it's been deprecated, so it may eventually be removed and it's safer to use the newer method.
- 0
- 2019-01-07
- WebElaine
-
Да сейчас поменял сtax наtay_query ..Yes now changed from tax to tay_query..
- 0
- 2019-12-11
- mamunuzaman
По какой-то причине мне сложно получить любые сообщения с использованием настраиваемой таксономии ... может ли кто-нибудь разгадать мою глупость?
Таксономическая декларация:
Объявление произвольного типа сообщения:
}