Numărarea postărilor (tip personalizat de postare) Probleme cu interogarea
Î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 } ?>

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;

Î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>";

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