Numărarea postărilor (tip personalizat de postare) Probleme cu interogarea

22 aug. 2011, 15:26:58
Vizualizări: 67.9K
Voturi: 19

Încerc să număr totalul postărilor pentru un tip personalizat de postare "jobs". Interogarea mea returnează doar "0" deși știu că există postări. Nu cred că verifică dacă tipul de postare are înregistrări, dar nu-mi dau seama de ce... aveți idei?

<?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>În prezent există un post vacant...</h2>"; }
    else { echo "<h2>În prezent există $count_posts posturi vacante...</h2>"; }

} else { ?>
<h2>În prezent nu există posturi vacante.</h2>
<?php } ?>
2
Comentarii

Ca o observație secundară, ai încercat count($jobs) sau print_r($jobs) doar pentru a vedea rezultatele originale ale interogării?

redconservatory redconservatory
22 aug. 2011 15:35:21

nu, tocmai am încercat și nu face nimic util.

Dan Lee Dan Lee
22 aug. 2011 15:51:30
Toate răspunsurile la întrebare 3
0
58

Funcția wp_count_posts are parametrul $type pentru tipul de articol de numărat, ar trebui să folosești acest parametru dacă vrei să obții numărul de joburi

astfel:

$count_posts = wp_count_posts( 'jobs' )->publish;
22 aug. 2011 17:04:16
3

Înlocuiți acestea cu valorile dvs. pentru 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>Numărul total este: $count</p>";
27 nov. 2013 10:57:21
Comentarii

Este o practică foarte proastă să folosești SQL simplu în codul tău. Există o mulțime de funcții wrapper în WordPress care fac același lucru și chiar mai mult.

NoSense NoSense
5 oct. 2014 17:15:38

@NoSense pe lângă faptul că funcțiile wrapper încorporate sunt foarte foarte lente, deoarece returnează o grămadă de metadate pe care nimeni nu le-a cerut. Folosirea SQL este o modalitate foarte eficientă de a prelua datele specifice de care ai nevoie.

Sam Sam
31 mai 2020 20:49:49

Notă pentru mine BOOKMARK: Acest lucru poate fi util când încerci să testezi o interogare SQL pentru filtrarea după metadate personalizate relaționate

Eric Hepperle - CodeSlayer2010 Eric Hepperle - CodeSlayer2010
29 ian. 2025 22:38:09
2

O altă metodă, folosind WP-CLI:

wp eval 'echo wp_count_posts( "post" )->publish;'; echo
6 iul. 2020 20:02:42
Comentarii

acest lucru nu rezolvă problema de aici. De asemenea, exemplul tău este și el greșit!

Sabbir Hasan Sabbir Hasan
8 iul. 2020 14:11:57

Poate fi folosit pentru postări și produse în același timp?

Brad Dalton Brad Dalton
14 sept. 2023 19:30:35