Comptage du nombre de publications (type de publication personnalisé) Problèmes de requête

11

J'essaie de compter le nombre total de messages d'un type de message personnalisé "jobs". Ma requête renvoie simplement "0" lorsque je sais qu'il y a des messages. Je ne pense pas que cela vérifie que le type de message a des messages, mais je ne sais pas pourquoi ... des idées?

<?php $jobs = new WP_Query(array( 'post_type' => 'jobs' ));?>
<?php if ($jobs->have_posts()) { 

    $count_posts = wp_count_posts()->publish; 
    if ( $count_posts == "1" ) { 
        echo "<h2>There is currently one vacancy...</h2>"; }
    else { echo "<h2>There are currently  $count_posts vacancies...</h2>"; }

} else { ?>
<h2>There are currently no vacancies.</h2>
<?php } ?>
Dan Lee
la source
En remarque, avez-vous essayé count ($ jobs) ou print_r ($ jobs) juste pour voir les résultats originaux de la requête?
redconservatory
non, juste essayé et ça n'a rien d'utile.
Dan Lee

Réponses:

38

La wp_count_postsfonction a un paramètre $typepour le type de publication à compter, vous devez utiliser ce paramètre si vous souhaitez obtenir le nombre de travaux

ainsi:

$count_posts = wp_count_posts( 'jobs' )->publish;
Mamaduka
la source
Ça fait l'affaire!
Dan Lee
Je suis content que cela ait aidé
Mamaduka
Vous devez accepter cette réponse, en cliquant sur la coche sous le décompte des votes, dans le coin supérieur gauche de la réponse.
Chip Bennett
-1

Remplacez-les par vos meta_key et meta_value:

$meta_key = 'x';
$meta_value = '2';

$sql = "SELECT count(DISTINCT pm.post_id)
FROM $wpdb->postmeta pm
JOIN $wpdb->posts p ON (p.ID = pm.post_id)
WHERE pm.meta_key = '$meta_key'
AND pm.meta_value = '$meta_value'
AND p.post_type = 'post'
AND p.post_status = 'publish'
";

$count = $wpdb->get_var($sql);
echo "<p>Count is: $count</p>";
urooj
la source
C'est une très mauvaise pratique d'utiliser le SQL simple dans votre code. Il existe de nombreuses fonctions de wrapper WP qui font la même chose et encore plus.
NoSense