Zählen der Anzahl der Beiträge (benutzerdefinierter Beitragstyp) Abfrageprobleme

11

Ich versuche, die Anzahl der Gesamtbeiträge eines benutzerdefinierten Beitragstyps "Jobs" zu zählen. Meine Abfrage gibt nur "0" zurück, wenn ich weiß, dass es Beiträge gibt. Ich glaube nicht, dass überprüft wird, ob der Beitragstyp Beiträge enthält, aber ich weiß nicht, warum ... irgendwelche Ideen?

<?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
quelle
Haben Sie als Randnotiz versucht, count ($ jobs) oder print_r ($ jobs) zu verwenden, um die ursprünglichen Ergebnisse der Abfrage anzuzeigen?
Redconservatory
Nein, nur versucht und es ist nichts Nützliches.
Dan Lee

Antworten:

38

Die wp_count_postsFunktion verfügt über einen Parameter $typefür den zu zählenden Beitragstyp. Sie sollten diesen Parameter verwenden, wenn Sie die Anzahl der Jobs abrufen möchten

wie so:

$count_posts = wp_count_posts( 'jobs' )->publish;
Mamaduka
quelle
Das macht den Job!
Dan Lee
Ich bin froh, dass es geholfen hat
Mamaduka
Sie müssen diese Antwort akzeptieren , indem Sie auf das Häkchen unter der Stimmenzahl in der oberen linken Ecke der Antwort klicken .
Chip Bennett
-1

Ersetzen Sie diese durch Ihren meta_key und 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
quelle
Es ist eine sehr schlechte Praxis, einfaches SQL in Ihrem Code zu verwenden. Es gibt viele WP-Wrapper-Funktionen, die dasselbe und noch mehr tun.
NoSense