Kategorie ID in category.php ausgeben?

  • [COLOR=#333333]Hallo,[/COLOR]
    [COLOR=#333333]erstmal zur Einführung.[/COLOR]
    [COLOR=#333333]Also ich baue gerade eine neue Website für einen Turnverein.[/COLOR]
    [COLOR=#333333]Da hat man ja allerlei verschiedenen Inhalt. Die alte (derzeitige Website) besteht schon seit 2007 und soll nun möglichst bald von der neuen abgelöst werden.[/COLOR]

    [COLOR=#333333]Über die normale Beitragsfunktion von Wordpress will ich auf der neuen Homepage die Bereiche News, Presse und Ergebnisse mit jeweils Unterkategorien (z.B. Ergebnisse -> Leichtathketik) laufen lassen. Das klappt an sich auch, da man ja Kategorien und Unterkategorien festlegen kann.[/COLOR]
    [COLOR=#333333]Was mir nicht gefällt ist, dass man über die Archiv-Seiten nur alle Beiträge einer Kategorie untereinander aufgelistet bekommt. Das finde ich, wenn man mehr als 8 Jahre auflisteten will ziemlich unübersichtlich. [/COLOR]

    [COLOR=#333333]Über die Archiv-Widgets kann man ja auch nur nach Jahr (dann hat man aber wieder alle Kategorien zusammengemischt) oder wieder nur über die Kategorie als ganzes suchen/sortieren.[/COLOR]

    [COLOR=#333333]Ich hab mir jetzt was gedacht (ich weiß nicht obs überhaupt möglich ist, weil ich vom Programmieren / PHP keine Ahnung hab)[/COLOR]

    [COLOR=#333333]Also ich hab mir das Smart Archiv Reloaded genommen. Da kann man ja per shortcode auf einer statischen Seite ein Archiv anzeigen lassen, nur hätte ich gerne diese Navigation nach Jahren auch in den einzelnen Kategorie-Archiven. Ich kann zwar natürlich auch einzelne statische Seiten für jeweils eine Kategorie anlegen und diese über die Hauptnavigation verlinken, nur nützt mich das ja nix, wenn jemand auf den Kategorienname, der in den Metatags unter dem Beitragsname angezeigt wird, klickt. Derjenige wird dann ja wieder auf das eigentliche Kategorie-Archiv mit Aufbau nach category.php weitergeleitet, wo wieder nur alle Kategorie-Beiträge unter einander aufgelistet sind.[/COLOR]

    [COLOR=#333333]Also habe ich jetzt einen Codeschnipsel für das Smart Archive Reloaded in die category.php eingebaut.[/COLOR]

    [COLOR=#333333]PHP-Code:
    [COLOR=#000000] [COLOR=#0000BB]<?php smart_archives[/COLOR][COLOR=#007700]( [/COLOR][COLOR=#DD0000]''[/COLOR][COLOR=#007700], array(
    [/COLOR][COLOR=#DD0000]'category__in' [/COLOR][COLOR=#007700]=> array( [/COLOR][COLOR=#0000BB]1 [/COLOR][COLOR=#007700]) ) ); [/COLOR][COLOR=#0000BB]?>[/COLOR][/COLOR]
    [/COLOR]
    [COLOR=#333333]Das funktioniert soweit erstmal, er gibt jetzt das Smart Archiv Reloaded statt den normalen Beiträgen aus. Allerdings hab ich jetzt natürlich noch die Kategorie-ID in dem Fall "1" manuell da reingeschrieben. Deshalb zeigt er jetzt natürlich auf sämtlichen Kategorie-Archiven nur die Kategorie News mit der ID=1 an. [/COLOR]
    [COLOR=#333333]siehe:[/COLOR]
    http://maxx-x.de/turnverein/category/neuigkeiten/

    [COLOR=#333333]Deshalb meine Frage, was muss ich da reinschreiben, dass er automatisch die jeweilige Kategorie ID dem Smart-Archiv übergibt? Den Titel der jeweiligen Kategorie gibt er ja auch in der category.php aus, da muss es doch bestimmt auch möglich sein, die ID dort auszugeben?[/COLOR]

    [COLOR=#333333]Hoffe ihr versteht was ich meine[/COLOR]

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Hab mittlerweile selbst eine Option gefunden mit

    PHP
    $category = get_the_category();


    und

    PHP
    <?php smart_archives( '', array('category__in' => array( $category[0]->cat_ID ) ) ); ?>

    In der Category.php funktioniert es so halb

    Das Problem hier ist, dass es nur funktioniert, solange der Beitrag nur in einer Kategorie ist, wie z.B. der Test-Beitrag auf der Home-Seite nur in "Neuigkeiten".
    Dann bekommt er über get.... die ID 1 von den "Neuigkeiten" und übergibt die über $category[0] dem Smart Archiv, welches sich dann nur mit Beiträgen von der Kategorie mit ID 1 aufbaut.

    Wenn jetzt aber der Beitrag in mehreren Kategorien ist, wie z.B. der zweite Beitrag auf der Home-Seite (in der Hauptkategorie "Presse" und der Unterkategorie "Wandern"), dann holt der sich mit dem get.. beide Kategorie IDs also von "Presse" und "Wandern". Auch wenn ich auf der Home-Seite nur auf den Metatag Wandern klicke und er auch vom Titel her richtig das Archiv der Kategorie "Wandern" öffnet, holt er sich als erste ID, die von "Presse" und dann als zweite die von "Wandern".
    Das sehe ich, wenn ich testweise per

    PHP
    foreach ( $category as $cat ) : echo '<li>' . $cat->cat_ID . '</li>';endforeach;


    Die im Array gespeicherten IDs ausgeben lassen.

    Aber wie soll ich es hinbekommen, dass er nur die ID von "Wandern" dem Smart-Archiv übergeben soll?
    Hab auch Beiträge, die sind in 3 Kategorien da ist dann das selbe, er holt sich alle 3 ID`s obwohl er natürlich nur die ID von derjenigen Kategorie verwenden soll, die vorher angeklickt wurde und deren Archiv er anzeigen soll.

    Gibt es vielleicht noch einen Befehl wie get_the_category, bei dem er sich auch wirklich nur die ID, von der Kategorie holt, die man vorher angeklickt hatte?
    Den Titel der Archiv Seite gibt er scheinbar über diesen Befehl in der category.php ja auch richtig aus und nicht auch den von Presse usw.

    PHP
    <h1 class="archive-title"><?php printf( __( 'Category Archives: %s', 'twentythirteen' ), single_cat_title( '', false ) ); ?></h1>

    Hier mal die ganze category.php (die echo`s hab ich ja nur zum Test drinne, um zu sehen was für IDs er da speichert und übergibt)

    PHP
    <?php/** * The template for displaying Category pages. * * Learn more: http://codex.wordpress.org/Template_Hierarchy * * @package WordPress * @subpackage Twenty_Thirteen * @since Twenty Thirteen 1.0 */
    get_header(); ?> <div id="sidebar_container_links"><?php get_sidebar( 'links' ); ?></div> <div id="content_container_rechts">    <div id="primary" class="content-area">        <div id="content" class="site-content" role="main">        <?php if ( have_posts() ) : ?>            <header class="archive-header">                <h1 class="archive-title"><?php printf( __( 'Category Archives: %s', 'twentythirteen' ), single_cat_title( '', false ) ); ?></h1>
                    <?php if ( category_description() ) : // Show an optional category description ?>                <div class="archive-meta"><?php echo category_description(); ?></div>                <?php endif; ?>            </header><!-- .archive-header -->            <?php /* The loop */ ?>            <?php             $category = get_the_category();             echo $category[0]->cat_ID;            foreach ( $category as $cat ) :            echo '<li>' . $cat->cat_ID . '</li>';            endforeach;             ?>                       <?php smart_archives( '', array(              'category__in' => array( $category[0]->cat_ID ) ) ); ?>                         
                        <?php endif; ?>
            </div><!-- #content -->    </div><!-- #primary -->  </div>  <div id="footer_container" class="clearfix"><?php get_sidebar( 'contentfooter' ); ?> </div><?php get_footer(); ?>
  • Hab jetzt selbst herausgefunden was ich brauche undzwar

    PHP
    <?php $category = $wp_query->get_queried_object_id(); ?>


    darüber gibt er nur genau die ID der Kategorie aus, die man auch angeklickt hat.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!