web-dev-qa-db-fra.com

Compter les messages dans la taxonomie personnalisée

Existe-t-il un moyen de compter tous les articles publiés à partir d'une taxonomie personnalisée?

En regardant autour de moi, je trouvai cet extrait mais je n’ai pas réussi à le faire fonctionner…

global $wpdb;
$query = "
        SELECT COUNT( DISTINCT cat_posts.ID ) AS post_count
        FROM wp_term_taxonomy AS cat_term_taxonomy INNER JOIN wp_terms AS cat_terms ON
        cat_term_taxonomy.term_id = cat_terms.term_id
        INNER JOIN wp_term_relationships AS cat_term_relationships 
        ON cat_term_taxonomy.term_taxonomy_id = cat_term_relationships.term_taxonomy_id
        INNER JOIN wp_posts AS cat_posts 
        ON cat_term_relationships.object_id = cat_posts.ID
        WHERE cat_posts.post_status = 'publish' 
        AND cat_posts.post_type = 'post' 
        AND cat_term_taxonomy.taxonomy = 'YOUR-CUSTOM-TAXONOMY' 
        AND cat_terms.slug IN ('TERM-SLUG-1, TERM-SLUG-2')
    ";
return $wpdb->get_var($query);
5
user1706680

Utilisez une instance de WP_Query pour interroger la base de données. http://codex.wordpress.org/Class_Reference/WP_Query

Pour interroger la base de données pour une utilisation de taxonomies personnalisées,

$query = new WP_Query( array( 'people' => 'bob' ) );

Pour plus de détails sur les options disponibles, voir: Paramètres de taxonomie http://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

Récupérer les articles publiés en utilisant

'post_status' => 'publish'

Utilisez found_posts pour récupérer le nombre de messages

$count = $query->found_posts;
5
Upeksha
function wp_get_productcat_postcount($id) {

    //return $count;
    $args = array(
      'post_type'     => 'product', //post type, I used 'product'
      'post_status'   => 'publish', // just tried to find all published post
      'posts_per_page' => -1,  //show all
      'tax_query' => array(
        'relation' => 'AND',
        array(
          'taxonomy' => 'product_cat',  //taxonomy name  here, I used 'product_cat'
          'field' => 'id',
          'terms' => array( $id )
        )
      )
    );

    $query = new WP_Query( $args);

    /*
    echo '<pre>';

    print_r($query->post_count);
    echo '</pre>';
    */

    return (int)$query->post_count;

}
2
Manchumahara

Le code ci-dessous indique le nombre d'articles issus d'une taxonomie particulière.

<?php 
  $terms = get_the_terms( $post->ID , 'your-taxonomy' );
  foreach ( $terms as $term ) {
    echo $term->count;
  } ?>
1
Varsha Dhadge

Wordpress ajoute un nombre d'attributs à chaque taxonomie et la met à jour chaque fois qu'une nouvelle publication est insérée ou mise à jour. Parce qu'il ne veut plus retourner dans la base de données et faire des calculs pour que les articles soient comptabilisés dans la taxonomie.

echo $custom_tax_obj->count;
1
ashraf mohammed

Vous pouvez le faire avec l'objet actuel avec get_queried_object ()

$ posts = get_queried_object (); 
 echo $ posts-> count;

Sinon, vous risquez d'exécuter une seconde requête, n'est-ce pas?

1
Benjamin Luoma

Je suis confronté à cette situation dans les modèles d'archive de taxonomie (par exemple, taxonomy-taxname.php) pour un site avec un type de publication personnalisé et les taxonomies de catégorie/tag associées. Je voulais dans mon en-tête afficher le nombre d'éléments utilisant la taxonomie.

Dans mes modèles d'archive de taxonomie, j'avais besoin de trouver le terme de taxonomie représenté, puis de le transmettre à une fonction pour obtenir le nombre d'éléments de type posts personnalisés utilisant ce terme, à partir du tag taxonomie.

// the term we need for this taxonomy
$term_obj = get_queried_object(); 

// get the term object
$term = get_term( $term_obj->term_id, 'taxname' );

// get a count of content with this term
$tax_count = get_tax_count('taxname', $term->slug, 'custom-post-type-name');

// grammar counts
$plural = ( $tax_count == 1) ? '' : 's';

echo $tax_count . ' Item' . $plural . ' Tagged "' . $term->name . '"';

La fonction permettant de compter utilise WP_Query avec un tax_query:

function tax_count ( $taxonomy, $term, $post_type ) {
    // find the number of items in custom post type that use the term in a taxonomy

    $args = array(
        'post_type' =>  $post_type,
        'posts_per_page' => -1,
        'tax_query' => array(
            array(
                'taxonomy' => $taxonomy,
                'field'    => 'slug',
                'terms'    => $term,
            ),
        ),
    );

    $tax_query = new WP_Query( $args );

    return ($tax_query->found_posts);

}
0
cogdog
$args = array(
'post_type' => 'product',
'post_status' => 'published',
'product_cat' => $catpage, // $catpage == your category slug name
'numberposts' => -1
);
echo $num = count( get_posts( $args ) );
0
narinder kumar