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 } ?>

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;

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>";

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.