web-dev-qa-db-fra.com

Compter le nombre de publications publiées par type

J'ai ce code, mais il indique le nombre total de messages publiés par type de message 'code'.

<?php
$count_posts = wp_count_posts('code')->publish;
echo $count_posts;
?>

J'ai 2 types de post: "code" et "magasin".
Le code de type de message est "un enfant" pour le type de message 'magasin'.
Par conséquent, je dois afficher le nombre de messages pour le "code" de type de message "enfant" pour ceux attachés au type de message "magasin" de "parrent".

MISE À JOUR - SOLUTION (le cas échéant, rencontrez le même problème):

<?php
                            $result = $wpdb->get_results(
                                $wpdb->prepare(
                                    "SELECT COUNT(*) AS code_num FROM {$wpdb->prefix}postmeta AS postmeta LEFT JOIN {$wpdb->prefix}postmeta AS postmeta1 ON postmeta.post_id = postmeta1.post_id WHERE postmeta1.meta_key = 'code_expire' AND postmeta1.meta_value > %d AND postmeta.meta_key = 'code_shop_id' AND postmeta.meta_value = %s",
                                    current_time('timestamp'),
                                    $post->ID
                                )
                            );
                            $result = array_shift( $result );
                            echo '
                                <li class="list-group-item">
                                    <span class="badge">'.$result->code_num.'</span>
                                    <a href="'.esc_url( get_permalink( $post->ID ) ).'"> '.$post->post_title.' </a>
                                </li>';
    ?>

Un grand merci à Ahmed!

1
Kasper

Si vous préférez les requêtes directes $ wpdb, vous pouvez utiliser quelque chose comme ceci:

global $wpdb;   
$count = $wpdb->get_var( "SELECT COUNT(ID) FROM {$wpdb->posts} WHERE post_type = 'code' and post_status = 'publish'" );
echo $count;

Dans la requête SQL ci-dessus, remplacez le post_type par ce que vous voulez. Cela renverra le nombre de publications publiées sous un type de publication spécifique uniquement.

Si vous souhaitez interroger les comptes de plusieurs types de publication, procédez comme suit:

global $wpdb;   
$count = $wpdb->get_var( "SELECT COUNT(ID) FROM {$wpdb->posts} WHERE post_type IN ( 'code', 'shop', 'post', 'etc' ) and post_status = 'publish'" );
echo $count;

J'espère que cela pourra aider.

0
Ahmed Fouad
$count = 0; 
$loop = new WP_Query( array('post_type' => 'code') );

while ( $loop->have_posts() ) : $loop->the_post();
  $count = $count + 1;
endwhile;

echo $count;
0
RyanCameron.Me