Zliczanie liczby postów (niestandardowy typ postu) Problemy z zapytaniami


11

Próbuję policzyć całkowitą liczbę postów niestandardowego typu „zadania”. Moje zapytanie zwraca tylko „0”, gdy wiem, że są posty. Nie sądzę, że sprawdza, czy typ posta zawiera posty, ale nie mam pojęcia, dlaczego ... jakieś pomysły?

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

Na marginesie, czy próbowałeś policzyć ($ jobs) czy print_r ($ jobs) tylko po to, by zobaczyć oryginalne wyniki zapytania?
redconservatory

nie, po prostu próbowałem i nic nie jest przydatne.
Dan Lee

Odpowiedzi:


38

wp_count_postsFunkcja ma parametr $typedla postu typ liczyć, należy użyć tego parametru, jeśli chcesz uzyskać liczbę miejsc pracy

tak:

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

To działa!
Dan Lee,

Cieszę się, że to pomogło
Mamaduka,

Musisz zaakceptować tę odpowiedź, klikając znacznik wyboru pod liczbą głosów w lewym górnym rogu odpowiedzi.
Chip Bennett

-1

Zastąp je meta_key i 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>";

1
Używanie zwykłego kodu SQL w kodzie jest bardzo złe. Istnieje wiele funkcji otoki WP, które robią to samo, a nawet więcej.
NoSense
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.