Conteggio del numero di articoli (custom post type) Problemi di Query

22 ago 2011, 15:26:58
Visualizzazioni: 67.9K
Voti: 19

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

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

redconservatory redconservatory
22 ago 2011 15:35:21

no, ho appena provato e non fa nulla di utile.

Dan Lee Dan Lee
22 ago 2011 15:51:30
Tutte le risposte alla domanda 3
0
58

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;
22 ago 2011 17:04:16
3

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>";
27 nov 2013 10:57:21
Commenti

È 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 NoSense
5 ott 2014 17:15:38

@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.

Sam Sam
31 mag 2020 20:49:49

Nota per me stesso SEGNALIBRO: Questo potrebbe essere utile quando si cerca di testare una query SQL per filtrare in base a metadati personalizzati correlati

Eric Hepperle - CodeSlayer2010 Eric Hepperle - CodeSlayer2010
29 gen 2025 22:38:09
2

Un altro modo, utilizzando WP-CLI:

wp eval 'echo wp_count_posts( "post" )->publish;'; echo
6 lug 2020 20:02:42
Commenti

questo non risolve il problema qui. Inoltre anche il tuo esempio è sbagliato!

Sabbir Hasan Sabbir Hasan
8 lug 2020 14:11:57

Può essere utilizzato per articoli e prodotti contemporaneamente?

Brad Dalton Brad Dalton
14 set 2023 19:30:35