web-dev-qa-db-fra.com

Compter les posts avec term_meta spécifique

J'ai un type de message personnalisé qui a de nombreuses taxonomies. Au début, un utilisateur peut attribuer une valeur de "catégorie" (term_meta) à la taxonomie - matériel ou logiciel.

Je voulais pouvoir compter combien il y avait de term_meta posts.

 $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);

Cela me donnera le nombre total de messages dans la semaine. Mais je veux compter les posts qui ont la taxonomie avec les term_meta 'matériel' ou 'logiciel'.

Est-ce possible?

1

Donc, en regardant un autre code que j'ai, je pense que ce serait la bonne façon de s'y prendre. Je ne l'ai pas testé, mais je sens que cela fonctionnerait comme j'en avais besoin aussi (je n'ai plus besoin de compter les types).

$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
$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
BlueSuiter