Articles
Jak mogę wyświetlić nazwę kategorii w pojedynczym poście podczas korzystania z WP Blog and Widget?
On 16 lutego, 2021 by adminUżywam bezpłatnej wersji wtyczki WP Blog and Widget na moim blogu. Działa idealnie.
Mój problem polega na tym, że muszę wyświetlać nazwę kategorii aktualnych postów na mojej pojedynczej stronie. Dlatego wypróbowałem poniższy kod na stronie single.php, aby sprawdzić nazwę kategorii.
$cat = get_the_category(); print_r($cat);
ale nie otrzymuję nazwy kategorii. Otrzymuję pustą tablicę.
Array ( )
Jak mogę rozwiązać ten problem?
Single.php
<?php /** * The template for displaying all single posts * * @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 /* Start the 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 = "Not Assigned"; } echo $post_categories; get_template_part( "template-parts/content/content", "single" ); if ( is_singular( "attachment" ) ) { // Parent post navigation. the_post_navigation( array( /* translators: %s: parent post link */ "prev_text" => sprintf( __( "<span class="meta-nav">Published in</span><span class="post-title">%s</span>", "twentynineteen" ), "%title" ), ) ); } elseif ( is_singular( "post" ) ) { // Previous/next post navigation. the_post_navigation( array( "next_text" => "<span class="meta-nav" aria-hidden="true">" . __( "Next Post", "twentynineteen" ) . "</span> " . "<span class="screen-reader-text">" . __( "Next post:", "twentynineteen" ) . "</span> <br/>" . "<span class="post-title">%title</span>", "prev_text" => "<span class="meta-nav" aria-hidden="true">" . __( "Previous Post", "twentynineteen" ) . "</span> " . "<span class="screen-reader-text">" . __( "Previous post:", "twentynineteen" ) . "</span> <br/>" . "<span class="post-title">%title</span>", ) ); } // If comments are open or we have at least one comment, load up the comment template. if ( comments_open() || get_comments_number() ) { comments_template(); } endwhile; // End of the loop. ?> </main><!-- #main --> </section><!-- #primary --> <?php get_footer();
Komentarze
Odpowiedź
Możesz po prostu umieścić ten kod w swoim singlu. php
foreach((get_the_category()) as $category) { echo $category->cat_name . " "; }
Komentarze
- Dziękuję za odpowiedź, ale otrzymuję tylko Nieprzypisane
- więc przypisałeś kategorię?
- Tak, mam kategorię i już przypisałem.
- czy umieściłeś kod wewnątrz pętli while?
- Tak, dodałem inslide while (have_posts ()): Sprawdź mój kod. Zaktualizowałem pytanie.
get_the_category()
pobiera terminy z taksonomiicategory
. Połączona wtyczka tworzy niestandardowy typ posta, więc czy czy ' nie tworzy również osobnej taksonomii dla ' kategorii blogów '? Jeśli Twój post zawiera niestandardowe terminy taksonomii, których musisz użyćget_the_terms()
, a nieget_the_category()
.get_the_terms()
, musisz podać nazwę taksonomii, której nie ' nie wiem. Sprawdź adres URL ekranu edycji dla tych kategorii. Powinien zawierać nazwę taksonomii.