Contando o número de postagens (tipo de postagem personalizada) Problemas de consulta

11

Estou tentando contar o número total de postagens de um tipo de postagem personalizada "jobs". Minha consulta retorna "0" quando sei que há postagens. Eu não acho que está verificando se o tipo de postagem tem postagens, mas não sei por que ... alguma idéia?

<?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 } ?>
Dan Lee
fonte
Como observação, você tentou contar ($ jobs) ou print_r ($ jobs) apenas para ver os resultados originais da consulta?
redconservatory
não, apenas tentei e não faz nada de útil.
Dan Lee

Respostas:

38

A wp_count_postsfunção possui parâmetro $typepara o tipo de postagem ser contado; você deve usar esse parâmetro se desejar obter o número de trabalhos

igual a:

$count_posts = wp_count_posts( 'jobs' )->publish;
Mamaduka
fonte
Isso faz o trabalho!
Dan Lee
Estou feliz por ter ajudado #
583 Mamaduka
Você precisa aceitar esta resposta, clicando na marca de seleção abaixo da contagem de votos, no canto superior esquerdo da resposta.
Chip Bennett
-1

Substitua-os por sua 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>Count is: $count</p>";
urooj
fonte
É muito ruim usar sql simples no seu código. Existem muitas funções de wrapper WP que fazem a mesma coisa e ainda mais.
NoSense 05/10