Підрахунок кількості публікацій (спеціальний тип публікації) Проблеми із запитом


11

Я намагаюся підрахувати кількість загальних постів користувацького типу публікації "завдання". Мій запит просто повертає "0", коли я знаю, що є повідомлення. Я не думаю, що це перевірка того, чи є в публікації повідомлення, але я незрозумілий, чому ... якісь ідеї?

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

Як бічну примітку, ви спробували порахувати ($ вакансії) або print_r ($ завдання), щоб побачити оригінальні результати запиту?
redconservatory

ні, просто спробував, і нічого корисного не виходить.
Ден Лі

Відповіді:


38

У wp_count_postsфункції є параметр $typeдля підрахунку типу публікації, ви повинні використовувати цей параметр, якщо ви хочете отримати кількість завдань

так:

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

Це робить роботу!
Ден Лі

Я радий, що це допомогло
Мамадука

Вам потрібно прийняти цю відповідь, натиснувши галочку під підрахунком голосів у верхньому лівому куті відповіді.
Чіп Беннетт

-1

Замініть їх meta_key та 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>";

1
Дуже погано вправно використовувати звичайний sql у своєму коді. Існує багато функцій WP обгортки, які роблять те саме і навіть більше.
NoSense
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.