Contando el número de entradas (tipo de entrada personalizada) Problemas de consulta

22 ago 2011, 15:26:58
Vistas: 67.9K
Votos: 19

Estoy tratando de contar el número total de entradas de un tipo de entrada personalizada "jobs". Mi consulta solo devuelve "0" cuando sé que hay entradas. No creo que esté verificando si el tipo de entrada tiene publicaciones, pero no tengo idea de por qué... ¿alguna sugerencia?

<?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>Actualmente hay una vacante...</h2>"; }
    else { echo "<h2>Actualmente hay $count_posts vacantes...</h2>"; }

} else { ?>
<h2>Actualmente no hay vacantes.</h2>
<?php } ?>
2
Comentarios

Como nota al margen, ¿probaste con count($jobs) o print_r($jobs) solo para ver los resultados originales de la consulta?

redconservatory redconservatory
22 ago 2011 15:35:21

no, acabo de intentarlo y no hace nada útil.

Dan Lee Dan Lee
22 ago 2011 15:51:30
Todas las respuestas a la pregunta 3
0
58

La función wp_count_posts tiene el parámetro $type para especificar el tipo de publicación a contar, debes usar este parámetro si deseas obtener el número de trabajos

así:

$count_posts = wp_count_posts( 'jobs' )->publish;
22 ago 2011 17:04:16
3

Reemplaza estos con tu 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>El conteo es: $count</p>";
27 nov 2013 10:57:21
Comentarios

Es una muy mala práctica usar SQL plano en tu código. Hay muchas funciones envoltorio de WP que hacen lo mismo e incluso más.

NoSense NoSense
5 oct 2014 17:15:38

@NoSense aparte de que las funciones envoltorio integradas son realmente muy lentas ya que devuelven montones de metadatos que nadie pidió. Usar SQL es una forma realmente eficiente de obtener datos específicos que necesites.

Sam Sam
31 may 2020 20:49:49

Nota mental MARCADOR: Esto puede ayudar al intentar probar consultas SQL para filtrar por metadatos personalizados relacionados

Eric Hepperle - CodeSlayer2010 Eric Hepperle - CodeSlayer2010
29 ene 2025 22:38:09
2

Otra forma, utilizando WP-CLI:

wp eval 'echo wp_count_posts( "post" )->publish;'; echo
6 jul 2020 20:02:42
Comentarios

esto no resuelve el problema aquí. ¡Además, tu ejemplo también está mal!

Sabbir Hasan Sabbir Hasan
8 jul 2020 14:11:57

¿Se puede usar esto para publicaciones y productos al mismo tiempo?

Brad Dalton Brad Dalton
14 sept 2023 19:30:35