Подсчитывайте сообщения с определенным термином мета


У меня есть пользовательский тип записи, который имеет множество таксономий. В интерфейсе пользователь может присвоить таксономии значение "категория" (term_meta) - аппаратное или программное обеспечение.

Я хотел иметь возможность подсчитать, сколько было сообщений term_meta.

 $base_array        = array(
    'posts_per_page'    => -1,
    'fields'            => 'ids',
    'post_type'         => 'cpt',
    'post_status'       => array('publish'),
    'date_query'        => array(
            'before'    => 'next Saturday',
            'after'     => 'last Monday'
    )
);

$base = get_posts($base_array);

echo count($base);

Это даст мне общее количество сообщений за неделю. Но я хочу посчитать сообщения, в которых есть таксономия с термином_meta "оборудование" или "программное обеспечение".

Возможно ли это?

Author: markb, 2016-10-28

2 answers

$base_array        = array(
    'posts_per_page'    => -1,
    'fields'            => 'ids',
    'post_type'         => 'cpt',
    'post_status'       => array('publish'),
    'date_query'        => array(
            'before'    => 'next Saturday',
            'after'     => 'last Monday'
    ),
    'tax_query'        => array(
            'taxonomy'  => 'pas_here_taxonomy'
            'field'    => 'slug',
            'terms'    => array( 'hardware', 'software'),
'operator'      => 'IN'
    )
);

$base = get_posts($base_array);

echo count($base);
 2
Author: BlueSuiter, 2016-10-28 12:31:48

Итак, глядя на какой-то другой код, который у меня есть, я чувствую, что это было бы правильным решением. Я не тестировал его, но чувствую, что он будет работать так, как мне было нужно (больше не нужно считать типы).

$base_array = array(
    'posts_per_page'    => -1,
    'fields'            => 'ids',
    'post_type'         => 'cpt',
    'post_status'       => array('publish'),
    'date_query'        => array(
        'before'    => 'next Saturday',
        'after'     => 'last Monday'
    )
);

$base = get_posts($base_array);


foreach( $base as $post_id ) {
    $term_meta = get_term_meta( post_id, 'tax_term_type', true );

    $term_hardware += ($term_meta == 'term_meta_hardware') ? 1 : 0;
    $term_software += ($term_meta == 'term_meta_software') ? 1 : 0;
}

echo count( $term_hardware );
echo count( $term_software );
 1
Author: markb, 2016-11-01 23:47:39