Cómo mostrar el nombre de la categoría en una entrada individual usando WP Blog and Widget

20 abr 2020, 14:53:54
Vistas: 10.6K
Votos: 0

Estoy usando la versión gratuita del plugin WP Blog and Widget para mi blog. Funciona perfectamente.

Mi problema es que necesito mostrar el nombre de la categoría del post actual en la página individual. Intenté usar el siguiente código en single.php para ver el nombre de la categoría:

$cat = get_the_category();
print_r($cat);

Pero no obtengo el nombre de la categoría. Recibo un array vacío:

Array ( )

¿Cómo puedo solucionar este problema?

Single.php

<?php
    /**
     * Plantilla para mostrar todas las entradas individuales
     *
     * @link https://developer.wordpress.org/themes/basics/template-hierarchy/#single-post
     *
     * @package WordPress
     * @subpackage Twenty_Nineteen
     * @since 1.0.0
     */

    get_header();
?>

<section id="primary" class="content-area">
    <main id="main" class="site-main">

        <?php
            /* Comienza el Loop */
            while ( have_posts() ) :
                the_post();

            $cats = array();
            foreach (get_the_category($post_id) as $c) {
                $cat = get_category($c);
                array_push($cats, $cat->name);
            }

            if (sizeOf($cats) > 0) {
                $post_categories = implode(', ', $cats);
            } else {
                $post_categories = 'No asignada';
            }
            echo $post_categories;


            get_template_part( 'template-parts/content/content', 'single' );

            if ( is_singular( 'attachment' ) ) {
                // Navegación entre posts padres
                the_post_navigation(
                    array(
                        /* translators: %s: enlace al post padre */
                        'prev_text' => sprintf( __( '<span class="meta-nav">Publicado en</span><span class="post-title">%s</span>', 'twentynineteen' ), '%title' ),
                    )
                );
            } elseif ( is_singular( 'post' ) ) {
                // Navegación entre posts anterior/siguiente
                the_post_navigation(
                    array(
                        'next_text' => '<span class="meta-nav" aria-hidden="true">' . __( 'Siguiente Post', 'twentynineteen' ) . '</span> ' .
                            '<span class="screen-reader-text">' . __( 'Siguiente post:', 'twentynineteen' ) . '</span> <br/>' .
                            '<span class="post-title">%title</span>',
                        'prev_text' => '<span class="meta-nav" aria-hidden="true">' . __( 'Post Anterior', 'twentynineteen' ) . '</span> ' .
                            '<span class="screen-reader-text">' . __( 'Post anterior:', 'twentynineteen' ) . '</span> <br/>' .
                            '<span class="post-title">%title</span>',
                    )
                );
            }

            // Si los comentarios están abiertos o hay al menos un comentario, carga la plantilla de comentarios
            if ( comments_open() || get_comments_number() ) {
                comments_template();
            }

            endwhile; // Fin del loop.
        ?>

        </main><!-- #main -->
    </section><!-- #primary -->

<?php
    get_footer();
12
Comentarios

¿Dónde estás mostrando el nombre de la categoría? ¿En el bucle de publicaciones o fuera del bucle de publicaciones, como en un widget?

Atif Aqeel Atif Aqeel
20 abr 2020 15:01:14

@AtifAqeel, tengo que mostrar el nombre de la categoría en mi página single.php.

Naren Verma Naren Verma
20 abr 2020 15:03:11

get_the_category() obtiene términos de la taxonomía category. El plugin que enlazaste crea un tipo de publicación personalizado, ¿estás seguro de que no está creando también una taxonomía separada para 'categorías de blog'? Si tu publicación tiene términos de taxonomía personalizados, necesitas usar get_the_terms(), no get_the_category().

Jacob Peattie Jacob Peattie
20 abr 2020 15:24:33

@JacobPeattie, Déjame intentar tu comentario anterior.

Naren Verma Naren Verma
20 abr 2020 15:27:49

@NarenVerma Ten en cuenta que si usas get_the_terms() necesitas proporcionar el nombre de la taxonomía, el cual no conozco. Revisa la URL de la pantalla de edición para esas categorías. Debería incluir el nombre de la taxonomía.

Jacob Peattie Jacob Peattie
20 abr 2020 15:28:57

@JacobPeattie, Probé el siguiente código $term_obj_list = get_the_terms( $post->ID, 'taxonomy' ); print_r($term_obj_list);

y obtuve como resultado WP_Error Object ( [errors] => Array ( [invalid_taxonomy] => Array ( [0] => Invalid taxonomy. ) ) [error_data] => Array ( ) )

Naren Verma Naren Verma
20 abr 2020 15:31:39

Lee mi comentario anterior.

Jacob Peattie Jacob Peattie
20 abr 2020 15:32:52

@JacobPeattie, Sí, leí tu primer comentario. El plugin que estoy usando está creando una taxonomía separada para 'categorías de blog'.

Naren Verma Naren Verma
20 abr 2020 15:35:19

Lee mi otro comentario.

Jacob Peattie Jacob Peattie
20 abr 2020 15:38:14

@JacobPeattie, entendí tu punto taxonomy=blog-category así que debo usarlo como $terms = get_the_terms( $post->ID , 'blog-category' ); foreach ( $terms as $term ) { echo $term->name; }

Naren Verma Naren Verma
20 abr 2020 15:40:41

Correcto. ¿Funciona?

Jacob Peattie Jacob Peattie
20 abr 2020 15:41:10

@JacobPeattie, obtuve el nombre de mi categoría. Gracias por la ayuda.

Naren Verma Naren Verma
20 abr 2020 15:42:40
Mostrar los 7 comentarios restantes
Todas las respuestas a la pregunta 1
14

Puedes simplemente colocar este código en tu archivo single.php

foreach((get_the_category()) as $category) 
{
    echo $category->cat_name . ' '; 
}
20 abr 2020 15:04:52
Comentarios

Gracias por la respuesta, pero solo obtengo No asignado

Naren Verma Naren Verma
20 abr 2020 15:07:36

¿entonces has asignado la categoría?

Atif Aqeel Atif Aqeel
20 abr 2020 15:09:03

Sí, tengo categoría y ya la he asignado.

Naren Verma Naren Verma
20 abr 2020 15:10:52

¿pusiste el código dentro del bucle while?

Atif Aqeel Atif Aqeel
20 abr 2020 15:11:21

Sí, lo agregué dentro de while ( have_posts() ) : Por favor revisa mi código. Lo actualicé en la pregunta.

Naren Verma Naren Verma
20 abr 2020 15:14:38

okay dame el while

Atif Aqeel Atif Aqeel
20 abr 2020 15:17:18

Acabo de agregar tu código dentro del bucle while y el resto del código lo obtuve del tema de WordPress.

Naren Verma Naren Verma
20 abr 2020 15:18:47

Tu código funciona si desactivo el plugin WP Blog and Widget. Pero no quiero desactivarlo porque he creado todos los blogs en ese

Naren Verma Naren Verma
20 abr 2020 15:21:39

Por favor, explica el motivo del voto negativo.

Naren Verma Naren Verma
20 abr 2020 15:22:53

he actualizado mi respuesta y he verificado que este código funciona bien dentro del bucle single.php https://prnt.sc/s2rhwd

Atif Aqeel Atif Aqeel
20 abr 2020 15:23:44

¿quién votó negativamente mi respuesta?

Atif Aqeel Atif Aqeel
20 abr 2020 15:24:44

Yo lo hice, porque no hay diferencia funcional entre el código en tu respuesta y la pregunta original. No resolverá el problema.

Jacob Peattie Jacob Peattie
20 abr 2020 15:25:28

¿No dijo que hay algún tipo de publicación personalizada? Está obteniendo publicaciones del blog, no del tipo de publicación personalizada.

Atif Aqeel Atif Aqeel
20 abr 2020 15:28:17

Están usando un tipo de publicación personalizada. Vinculó al plugin que lo agregó en su pregunta. Pero eso es completamente irrelevante porque incluso si estuvieran usando el blog, tu respuesta es incorrecta porque no cambia nada significativo en el código.

Jacob Peattie Jacob Peattie
20 abr 2020 15:37:11
Mostrar los 9 comentarios restantes