Contando el número de publicaciones (tipo de publicación personalizada) Problemas de consulta

11

Estoy tratando de contar el número total de publicaciones de un tipo de publicación personalizada "trabajos". Mi consulta solo devuelve "0" cuando sé que hay publicaciones. No creo que esté comprobando que el tipo de publicación tenga publicaciones, pero no tengo idea de por qué ... ¿alguna idea?

<?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
fuente
Como nota al margen, ¿trató de contar ($ jobs) o print_r ($ jobs) solo para ver los resultados originales de la consulta?
redconservatory
no, solo lo intenté y no sirve para nada.
Dan Lee

Respuestas:

38

La wp_count_postsfunción tiene un parámetro $typepara que el tipo de publicación cuente, debe usar este parámetro si desea obtener el número de trabajos

al igual que:

$count_posts = wp_count_posts( 'jobs' )->publish;
Mamaduka
fuente
Eso hace el trabajo!
Dan Lee
Me alegro de que haya ayudado
Mamaduka
Debe aceptar esta respuesta, haciendo clic en la marca de verificación debajo del recuento de votos, en la esquina superior izquierda de la respuesta.
Chip Bennett
-1

Reemplácelos con su meta_key y 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
fuente
Es una práctica muy mala usar sql simple en su código. Hay muchas funciones WP wrapper que hacen lo mismo y aún más.
NoSense