Conteggio del numero di post (tipo di post personalizzato) Problemi di query


11

Sto cercando di contare il numero di post totali di un tipo di post personalizzato "lavori". La mia query restituisce "0" quando so che ci sono post. Non credo stia verificando che il tipo di post abbia post, ma non ho idea del perché ... qualche idea?

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

Come nota a margine, hai provato a contare ($ jobs) o print_r ($ jobs) solo per vedere i risultati originali della query?
redconservatory il

no, ho appena provato e non c'è niente di utile.
Dan Lee,

Risposte:


38

La wp_count_postsfunzione ha un parametro $typeper il tipo di post da contare, è necessario utilizzare questo parametro se si desidera ottenere il numero di lavori

così:

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

Questo fa il lavoro!
Dan Lee,

Sono contento che abbia aiutato
Mamaduka,

Devi accettare questa risposta, facendo clic sul segno di spunta sotto il conteggio dei voti, nell'angolo in alto a sinistra della risposta.
Chip Bennett,

-1

Sostituiscili con meta_key e 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>";

È un pessimo modo di usare il semplice sql nel tuo codice. Esistono molte funzioni wrapper WP che fanno la stessa cosa e anche di più.
NoSense,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.