Исключить сообщения из определенного post_type - PullRequest
0 голосов
/ 06 июля 2018

Я создал post_type "collection", и вся его таксономия связана с post_type "product"

поэтому, когда я делаю это

global $wp;
$posts = get_terms( $wp->query_vars["name"]);
foreach($posts as $post): ?>
<a href="<?php echo get_term_link( $post );?>" rel="bookmark"><?=$post->name . " (".$post->count.")" ?> </a>
<?php endforeach;

это покажет все термины в post_type "product" под таксономической "style"

, но также показаны термины под post_type "collection" под таксономической "style"

Как можно исключить показ терминов в post_type "collection"

enter image description here

Ответы [ 2 ]

0 голосов
/ 07 июля 2018

Я, Кинда, сделал это так

<?php
$posts = get_terms($wp->query_vars["name"]);
$terms = get_terms($wp->query_vars["name"], array(
    'hide_empty' => 0,
));

foreach( $terms as $term ) :
    wp_reset_query();
    $args = array('post_type' => 'product',
        'tax_query' => array(
            array(
                'taxonomy' => $wp->query_vars["name"],
                'field' => 'slug',
                'terms' => $term->slug          
            ),
        ),
     );
    $posts = new WP_Query($args); 

    if( $posts->have_posts() ) : ?>
        <h3><?php echo $term->name; ?> - <?php echo $posts->post_count ?></h3>
    <?php endif; endforeach; ?>

так что $ posts-> post_count сделали свое дело

Другая проблема в том, что он прячется, когда он пуст, мне нужно показать все, даже пустые

0 голосов
/ 06 июля 2018

Фрэнсис, код в настоящее время выбирает «условия», а не сообщения, поэтому вы получаете больше, чем хотите. Если вы хотите получать сообщения (не термины), используйте https://developer.wordpress.org/reference/functions/get_posts/.

Этот пример наиболее близок к тому, что вы ищете https://developer.wordpress.org/reference/functions/get_posts/#comment-2516, заменитель в вашем post_type и таксономии.

...