Conteggio del numero di articoli (custom post type) Problemi di Query
Sto cercando di contare il numero totale di post di un custom post type "jobs". La mia query restituisce solo "0" quando so che ci sono dei post. Non credo che stia verificando se il post type ha dei post, ma non capisco il 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>Al momento c'è una posizione aperta...</h2>"; }
else { echo "<h2>Al momento ci sono $count_posts posizioni aperte...</h2>"; }
} else { ?>
<h2>Al momento non ci sono posizioni aperte.</h2>
<?php } ?>

La funzione wp_count_posts
ha il parametro $type
per il tipo di post da contare, dovresti usare questo parametro se vuoi ottenere il numero di lavori
in questo modo:
$count_posts = wp_count_posts( 'jobs' )->publish;

Sostituisci questi con il tuo 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>Il conteggio è: $count</p>";

È una pessima pratica utilizzare SQL semplice nel tuo codice. Ci sono molte funzioni wrapper di WP che fanno la stessa cosa e anche di più.

@NoSense a parte il fatto che le funzioni wrapper integrate sono molto molto lente poiché restituiscono una quantità di metadati che nessuno ha richiesto. Usare SQL è un modo davvero efficiente per recuperare i dati specifici di cui hai bisogno.
