Yazı sayısını sayma (özel yazı tipi) Sorgu sorunları


11

Özel bir yazı türü "işleri" toplam mesaj sayısını saymaya çalışıyorum. Gönderiler olduğunu bildiğimde sorgum "0" değerini döndürüyor. Gönderi türünün gönderileri olup olmadığını kontrol ettiğini düşünmüyorum, ama neden ... herhangi bir fikir?

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

Yan not olarak, yalnızca sorgunun orijinal sonuçlarını görmek için count ($ jobs) veya print_r ($ jobs) denediniz mi?
redconservatory

Hayır, sadece denedim ve yararlı bir şey yok.
Dan Lee

Yanıtlar:


38

wp_count_postsParametre işlevi vardır $typesonrası tip saymak için size iş sayısını almak istiyorsanız, bu parametreyi kullanmalısınız

şöyle:

$count_posts = wp_count_posts( 'jobs' )->publish;

Bu işi yapar!
Dan Lee


Cevabın sol üst köşesindeki oy sayımının altındaki onay işaretini tıklayarak bu yanıtı kabul etmeniz gerekir .
Chip Bennett

-1

Bunları meta_key ve meta_value ile değiştirin:

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

1
Kodunuzda düz sql kullanmak çok kötü bir pratiktir. Aynı şeyi ve daha fazlasını yapan bir çok WP sarma işlevi vardır.
NoSense
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.