Come visualizzare il nome della categoria in un singolo post con WP Blog and Widget?

20 apr 2020, 14:53:54
Visualizzazioni: 10.6K
Voti: 0

Sto utilizzando la versione gratuita del plugin WP Blog and Widget per il mio blog. Funziona perfettamente.

Il mio problema è che devo visualizzare il nome della categoria del post corrente nella mia pagina singola. Quindi ho provato il seguente codice nella pagina single.php per verificare il nome della categoria.

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

ma non ottengo il nome della categoria. Ricevo un array vuoto.

Array ( )

Come posso risolvere questo problema?

Single.php

<?php
    /**
     * Template per visualizzare tutti i singoli post
     *
     * @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
            /* Inizia il 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 = 'Non Assegnato';
            }
            echo $post_categories;


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

            if ( is_singular( 'attachment' ) ) {
                // Navigazione post genitore.
                the_post_navigation(
                    array(
                        /* traduttori: %s: link post genitore */
                        'prev_text' => sprintf( __( '<span class="meta-nav">Pubblicato in</span><span class="post-title">%s</span>', 'twentynineteen' ), '%title' ),
                    )
                );
            } elseif ( is_singular( 'post' ) ) {
                // Navigazione post precedente/successivo.
                the_post_navigation(
                    array(
                        'next_text' => '<span class="meta-nav" aria-hidden="true">' . __( 'Prossimo Post', 'twentynineteen' ) . '</span> ' .
                            '<span class="screen-reader-text">' . __( 'Prossimo post:', 'twentynineteen' ) . '</span> <br/>' .
                            '<span class="post-title">%title</span>',
                        'prev_text' => '<span class="meta-nav" aria-hidden="true">' . __( 'Post Precedente', 'twentynineteen' ) . '</span> ' .
                            '<span class="screen-reader-text">' . __( 'Post precedente:', 'twentynineteen' ) . '</span> <br/>' .
                            '<span class="post-title">%title</span>',
                    )
                );
            }

            // Se i commenti sono aperti o abbiamo almeno un commento, carica il template dei commenti.
            if ( comments_open() || get_comments_number() ) {
                comments_template();
            }

            endwhile; // Fine del loop.
        ?>

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

<?php
    get_footer();
12
Commenti

Dove stai visualizzando il nome della categoria? Nel loop degli articoli o al di fuori del loop, come in un widget?

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

@AtifAqeel, devo visualizzare il nome della categoria nella mia pagina single.php.

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

get_the_category() ottiene i termini dalla tassonomia category. Il plugin che hai linkato crea un custom post type, quindi sei sicuro che non stia creando anche una tassonomia separata per le 'categorie del blog'? Se il tuo articolo ha termini di tassonomia personalizzata, devi usare get_the_terms(), non get_the_category().

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

@JacobPeattie, Fammi provare il tuo commento sopra.

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

@NarenVerma Tieni presente che se usi get_the_terms() devi fornire il nome della tassonomia, che io non conosco. Controlla l'URL della schermata di modifica per quelle categorie. Dovrebbe includere il nome della tassonomia.

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

@JacobPeattie, Ho provato il codice qui sotto $term_obj_list = get_the_terms( $post->ID, 'taxonomy' ); print_r($term_obj_list);

e ho ottenuto l'output WP_Error Object ( [errors] => Array ( [invalid_taxonomy] => Array ( [0] => Tassonomia non valida. ) ) [error_data] => Array ( ) )

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

Leggi il mio commento precedente.

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

@JacobPeattie, Sì, ho letto il tuo primo commento. Il plugin che sto utilizzando crea una tassonomia separata per le 'categorie del blog'.

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

Leggi il mio altro commento.

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

@JacobPeattie, ho capito il tuo punto taxonomy=blog-category quindi devo usare qualcosa come $terms = get_the_terms( $post->ID , 'blog-category' ); foreach ( $terms as $term ) { echo $term->name; }

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

Corretto. Funziona?

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

@JacobPeattie, ho ottenuto il nome della mia categoria. Grazie per l'aiuto.

Naren Verma Naren Verma
20 apr 2020 15:42:40
Mostra i restanti 7 commenti
Tutte le risposte alla domanda 1
14

Puoi semplicemente inserire questo codice nel tuo file single.php

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

Grazie per la risposta, ma ottengo solo Non Assegnato

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

quindi hai assegnato la categoria?

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

Sì, ho la categoria e l'ho già assegnata.

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

hai inserito il codice all'interno del ciclo while?

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

Sì, ho aggiunto all'interno del while ( have_posts() ) : Per favore controlla il mio codice. L'ho aggiornato nella domanda.

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

ok dammi il while

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

Ho appena aggiunto il tuo codice all'interno del ciclo while e il resto del codice l'ho preso dal tema WordPress.

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

Il tuo codice funziona se disattivo il plugin WP Blog and Widget. Ma non voglio disattivarlo perché ho creato tutti i blog con quello

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

Per favore spiega il motivo del voto negativo.

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

ho aggiornato la mia risposta e ho verificato che questo codice funziona correttamente all'interno del loop di single.php https://prnt.sc/s2rhwd

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

chi ha votato negativamente la mia risposta?

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

L'ho fatto io, perché non c'è alcuna differenza funzionale tra il codice nella tua risposta e la domanda originale. Non risolverà il problema.

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

Non ha detto che c'è un custom post type? Sta ottenendo i post dal blog, non da un custom post type.

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

Stanno usando un custom post type. Hanno linkato il plugin che lo aggiunge nella loro domanda. Ma questo è completamente irrilevante perché anche se stessero usando il blog, la tua risposta è sbagliata perché non cambia nulla di significativo nel codice.

Jacob Peattie Jacob Peattie
20 apr 2020 15:37:11
Mostra i restanti 9 commenti