¿Cómo contar entradas dentro de un tipo de entrada personalizada y taxonomía y términos específicos?

4 mar 2013, 04:49:59
Vistas: 62.3K
Votos: 9

Busco contar cuántas entradas existen dentro del tipo de entrada personalizada llamado "videos", pero solo aquellas de la categoría llamada "trabajo".

<?php $count_posts = wp_count_posts('videos'); echo $count_posts->publish; // ?>

¿Cómo puedo ajustar el código anterior para lograr esto?

¡Gracias!

0
Todas las respuestas a la pregunta 7
1

Una solución alternativa utilizando WP_Query sería:

$args = array(
  'cat' => 4,
  'post_type' => 'videos'
);
$the_query = new WP_Query( $args );
echo $the_query->found_posts;
2 mar 2014 23:53:48
Comentarios

Los tipos de entradas personalizadas utilizan taxonomías, no "categorías", por lo que esto es incorrecto.

Jesse Nickles Jesse Nickles
3 feb 2022 12:54:59
2

Para una taxonomía personalizada específica, prueba:

$the_query = new WP_Query( array(
    'post_type' => 'TIPO_DE_POST_PERSONALIZADO',
    'tax_query' => array(
        array(
            'taxonomy' => 'TAXONOMIA_PERSONALIZADA',
            'field' => 'id',
            'terms' => ID_TERMINO
        )
    )
) );
$count = $the_query->found_posts;

Documentación en https://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

26 ago 2015 14:30:32
Comentarios

Asegúrate de cambiar a echo $count = $the_query->found_posts; si quieres mostrar el resultado real en el frontend.

Jesse Nickles Jesse Nickles
3 feb 2022 12:40:55

Esta debería ser la respuesta aceptada (o con más votos).

Jesse Nickles Jesse Nickles
7 feb 2022 12:38:38
3

Encontré una solución.

<?php $posts = get_posts('post_type=videos&category=4'); 
$count = count($posts); 
echo $count; 
?>
4 mar 2013 05:03:16
Comentarios

Mala idea realmente. ¿Qué pasa si tienes 15,000 publicaciones? ¿Las cargas TODAS en memoria? Este tipo de conceptos erróneos podrían arruinar un sitio en producción.

Cranio Cranio
4 mar 2016 17:12:05

Como menciona @Cranio arriba: pésima idea obtener todas las publicaciones solo para contarlas.

dhuyvetter dhuyvetter
28 jul 2017 15:08:55

Ten en cuenta que publicó eso en 2013 antes de que WP_Query fuera popular.

Jesse Nickles Jesse Nickles
3 feb 2022 12:53:11
1

Esto también debería funcionar:

$category = get_term('work', 'category');
$posts_in_category = $category->count;
10 nov 2015 11:06:46
Comentarios

Esto fallará si una taxonomía está asignada a más de un tipo de publicación y solo necesitas el conteo de publicaciones de un tipo específico

Pieter Goosen Pieter Goosen
10 nov 2015 11:15:45
0

Sé que este es un hilo antiguo, pero aparece primero en Google, así que aquí está la solución REAL sobre cómo hacer esto.

$term = get_term( $termId, $taxonomy );
$total_in_term = $term->count;

Así que necesitas pasar el ID del término y la taxonomía. Esta es la solución más ligera y además tiene el beneficio de funcionar con taxonomías personalizadas.

4 abr 2019 21:01:49
0

Encontré esto mientras investigaba algo similar, así que aquí está mi solución por si le resulta útil a alguien más...

Nota: La respuesta de Harmonic funciona, dependiendo del escenario aunque puede ser más fácil hacer esto en su lugar:

$count = get_category($category->term_id)->category_count;

Donde $category es tu objeto de taxonomía.

Nota importante: esto asume que ningún otro post_type usa la misma taxonomía. Detalles: get_category() es en realidad una función envoltorio de get_term().

En este caso, get_term() tiene un parámetro name__like que get_category() no tiene. Probablemente haya otras pequeñas diferencias también.

Ver: get_term() get_category

20 ago 2020 06:11:22
0

Básicamente, si lo haces con tu solución encontrada, desperdiciarás muchos recursos de la base de datos cuando tengas que recuperar muchas publicaciones.

$query = new WP_Query();
echo $query->found_posts();

Sin embargo, WP_Query->found_posts solo recupera 'posts_per_page' y realiza el trabajo de COUNT(*) en MySQL por ti. Por lo tanto, te recomiendo que uses este último método.

25 jul 2014 00:39:57