Подсчет количества постов (пользовательский тип поста) Проблемы с запросом

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 } ?>
Дэн Ли
источник
Как примечание: вы пробовали count ($ jobs) или print_r ($ jobs), чтобы увидеть исходные результаты запроса?
красная консерватория
нет, только что попробовал, и ничего полезного.
Дэн Ли

Ответы:

38

У wp_count_postsфункции есть параметр $typeдля типа записи, который нужно посчитать, вы должны использовать этот параметр, если хотите получить количество заданий

вот так:

$count_posts = wp_count_posts( 'jobs' )->publish;
Mamaduka
источник
Это делает работу!
Дэн Ли
Я рад, что это помогло
Мамадука
Вам необходимо принять этот ответ, нажав на флажок под подсчетом голосов в верхнем левом углу ответа.
Чип Беннетт
-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>";
urooj
источник
Очень плохая практика использовать простой SQL в вашем коде. Есть много функций-оболочек WP, которые делают то же самое и даже больше.
NoSense