How can I display the category name in the single post when using WP Blog and Widget?

20 apr. 2020, 14:53:54
Vizualizări: 10.6K
Voturi: 0

Folosesc versiunea gratuită a plugin-ului WP Blog and Widget pentru blogul meu. Funcționează perfect.

Problema mea este că trebuie să afișez numele categoriei curente a articolului pe pagina individuală. Am încercat codul de mai jos în single.php pentru a verifica numele categoriei.

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

dar nu obțin numele categoriei. Obțin un array gol.

Array ( )

Cum pot rezolva această problemă?

Single.php

<?php
    /**
     * Șablonul pentru afișarea tuturor articolelor individuale
     *
     * @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
            /* Începe bucla */
            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 = 'Nu este atribuit';
            }
            echo $post_categories;


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

            if ( is_singular( 'attachment' ) ) {
                // Navigația către articolul părinte
                the_post_navigation(
                    array(
                        /* tradus: %s: link articol părinte */
                        'prev_text' => sprintf( __( '<span class="meta-nav">Publicat în</span><span class="post-title">%s</span>', 'twentynineteen' ), '%title' ),
                    )
                );
            } elseif ( is_singular( 'post' ) ) {
                // Navigația către articolul anterior/următor
                the_post_navigation(
                    array(
                        'next_text' => '<span class="meta-nav" aria-hidden="true">' . __( 'Articolul următor', 'twentynineteen' ) . '</span> ' .
                            '<span class="screen-reader-text">' . __( 'Articolul următor:', 'twentynineteen' ) . '</span> <br/>' .
                            '<span class="post-title">%title</span>',
                        'prev_text' => '<span class="meta-nav" aria-hidden="true">' . __( 'Articolul anterior', 'twentynineteen' ) . '</span> ' .
                            '<span class="screen-reader-text">' . __( 'Articolul anterior:', 'twentynineteen' ) . '</span> <br/>' .
                            '<span class="post-title">%title</span>',
                    )
                );
            }

            // Dacă comentariile sunt deschise sau avem cel puțin un comentariu, încărcăm șablonul de comentarii
            if ( comments_open() || get_comments_number() ) {
                comments_template();
            }

            endwhile; // Sfârșitul buclei
        ?>

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

<?php
    get_footer();
12
Comentarii

Unde afișezi numele categoriei? în bucla postărilor sau în afara acesteia, cum ar fi într-un widget?

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

@AtifAqeel, trebuie să afișez numele categoriei pe pagina single.php.

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

get_the_category() obține termenii din taxonomia category. Plugin-ul pe care l-ai menționat creează un tip de postare personalizat, deci ești sigur că nu creează și o taxonomie separată pentru 'categoriile de blog'? Dacă postarea ta are termeni din taxonomii personalizate, trebuie să folosești get_the_terms(), nu get_the_category().

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

@JacobPeattie, Permite-mi să încerc comentariul tău de mai sus.

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

@NarenVerma Reține că dacă folosești get_the_terms() trebuie să furnizezi numele taxonomiei, pe care eu nu-l cunosc. Verifică URL-ul ecranului de editare pentru acele categorii. Ar trebui să includă numele taxonomiei.

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

@JacobPeattie, Am încercat codul de mai jos $term_obj_list = get_the_terms( $post->ID, 'taxonomy' ); print_r($term_obj_list);

și am obținut următorul rezultat WP_Error Object ( [errors] => Array ( [invalid_taxonomy] => Array ( [0] => Invalid taxonomy. ) ) [error_data] => Array ( ) )

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

Citește comentariul meu anterior.

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

@JacobPeattie, Da, am citit primul tău comentariu. Plugin-ul pe care îl folosesc creează o taxonomie separată pentru 'categoriile de blog'.

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

Citește celălalt comentariu al meu.

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

@JacobPeattie, am înțeles ideea taxonomy=blog-category așa că trebuie să folosesc ceva de genul $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

Corect. Funcționează?

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

@JacobPeattie, am obținut numele categoriei. Mulțumesc pentru ajutor.

Naren Verma Naren Verma
20 apr. 2020 15:42:40
Arată celelalte 7 comentarii
Toate răspunsurile la întrebare 1
14

Puteți pur și simplu să introduceți acest cod în fișierul singl.php

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

Mulțumesc pentru răspuns, dar primesc doar „Not Assigned” (Neatribuit)

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

deci ai atribuit categoria?

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

Da, am o categorie și am atribuit-o deja.

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

ai pus codul în interiorul buclei while?

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

Da, am adăugat în interiorul while ( have_posts() ) : Te rog verifică codul meu. L-am actualizat în întrebare.

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

ok, dă-mi while

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

Tocmai am adăugat codul tău în interiorul buclei while, iar restul codului l-am preluat din tema WordPress.

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

Codul tău funcționează dacă dezactivez pluginul WP Blog and Widget. Dar nu vreau să-l dezactivez pentru că am creat toate articolele de blog folosindu-mă de el

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

Te rog să explici motivul pentru votul negativ.

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

am actualizat răspunsul meu și am verificat că acest cod funcționează corect în interiorul buclei single.php https://prnt.sc/s2rhwd

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

cine a votat negativ răspunsul meu?

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

Eu am făcut-o, pentru că nu există nicio diferență funcțională între codul din răspunsul tău și întrebarea originală. Nu va rezolva problema.

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

El nu a spus că există vreun tip de postare personalizată? El primește postări din blog, nu din tipul de postare personalizată.

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

Ei folosesc un tip de postare personalizată. Au legat la plugin-ul care l-a adăugat în întrebarea lor. Dar asta este complet irelevant pentru că chiar dacă ar folosi blogul, răspunsul tău este incorect deoarece nu schimbă nimic semnificativ în cod.

Jacob Peattie Jacob Peattie
20 apr. 2020 15:37:11
Arată celelalte 9 comentarii