Verificar si existen publicaciones en la categoría de tipo de publicación personalizada, fuera del bucle

2

Estoy creando una navegación, fuera del bucle principal, que incluye menús desplegables. Tengo un tipo de publicación personalizada llamada 'Eventos', que tiene sus propias categorías. Me gustaría que haya un menú desplegable si hay publicaciones dentro de ese tipo y categoría de publicación personalizada, pero no estoy seguro de qué funciones debería usar para determinar esto ...

Tengo ...

$hasposts = get_posts('post_type=Events&category=40');
if($hasposts) {
    ..// show the drop down menu
} 

¿Debería estar usando get_posts() ? Todo lo que me devuelven tiene una matriz vacía, pero sé que algunas de esas categorías incluyen publicaciones ...

Muchas gracias, WA.

    
pregunta RCNeil 14.02.2013 - 17:29

4 respuestas

6

Todo se reduce a WP_Query al final, incluso si usas get_posts, aquí está mi versión modificada:

$hasposts = get_posts('post_type=sc-events&category=40');
if( !empty ( $hasposts ) ) {
    ..// show the drop down menu
}

o

$query = new WP_Query(array(
    'post_type' => 'sc-events',
    'category' => 40
));
if( $query->have_posts() ){
    echo 'we have posts';
} else {
    echo 'no posts found';
}

Si bien esto funcionará, hay una alternativa inspirada en tu propia respuesta que utiliza la categoría slug en lugar de su ID:

$term = get_term_by('name', 'whatever category 40 is called', 'category');
if($term != false ){
    if($term->count > 0 ){
        // we have posts
    }
}
    
respondido por el Tom J Nowell 14.02.2013 - 18:01
0

Si desea tener una matriz con todos los términos dentro de su taxonomía personalizada, con la condición adicional que contienen al menos en la publicación, esta es la función que está buscando:

get_terms(
    'group',
    array(
        'hide_empty' => true
    )
);

Esto recuperará la información sobre los términos , no las publicaciones en sí. Lo único que sabe acerca de las publicaciones en este escenario es que existen dentro de esos términos, nada más. Si los menús desplegables mostrarán algún tipo de información con respecto a las publicaciones, tal vez necesite algo que no sea el anterior. De lo contrario, get_terms es la función que está buscando.

    
respondido por el Tomas Buteler 14.02.2013 - 18:21
0

Pude realizar esta comprobación condicional a través del siguiente código:

if (get_category('40')->category_count > 0) {
    ..//show the drop down
}
    
respondido por el RCNeil 14.02.2013 - 18:24
0

No hay ninguna razón para devolver el objeto get_posts completo, ya que puede mantener las cosas mejor optimizadas utilizando el parámetro fields para devolver solo las ID

$posts = get_posts( array(
    'post_type' => 'Events',
    'posts_per_page' => 1,
    'fields' => 'ids',
    'tax_query' => array(
        array(
            'taxonomy' => 'category',
            'field'    => 'term_id',
            'terms'    => array( '40' )
        ),
    ),
) );
if ( ! empty ( $posts ) ) {
    ..// show the drop down menu
}
    
respondido por el WPExplorer 04.08.2015 - 22:54

Lea otras preguntas en las etiquetas