it-swarm.com.de

eine Seite erstellen, die eine Liste der Kategorien Titel + Kurzbeschreibung anzeigt?

Ich habe einen Code, der alle Kategorien durchläuft und:

1.organisieren Sie sie in einer Hierarchie von (übergeordneten) Kategorien und deren untergeordneten Kategorien

2.Überprüfen Sie die Titel + Kurzbeschreibung jeder Kategorie + fügen Sie den Link "read more" zum vollständigen Inhalt dieser Kategorie hinzu.

3.Klicken Sie auf Lesen Sie mehr von einer der untergeordneten Kategorien . Sollte zu dieser Kategorieseite mit vollständiger Inhaltsbeschreibung führen.

4 prüft, ob sie Beiträge haben oder nicht.

5. zeigt eine Liste der Beiträge (Auszug + Link weiterlesen) an, die zu dieser Kategorie gehören

wenn ein Benutzer auf eine der untergeordneten Kategorien klickt (siehe Link weiter unten), wird eine andere Seite aufgerufen, auf der nur diese Kategorie mit oder ohne Beiträge angezeigt wird. Ich möchte jedoch, dass jetzt die vollständige Beschreibung dieser Kategorie und nicht nur die Kurzbeschreibung angezeigt wird Beschreibung ..

Ich dachte, wenn ich eine Möglichkeit hätte, eine eindeutige Klasse hinzuzufügen und damit die Seiten mit einer Kategorie (untergeordnete Kategorie) anvisieren zu können, kann ich dies lösen/ist dies der richtige Weg?

der Code in category.php

  <?php 
$CategoryPar = get_category( get_query_var( 'cat' ) ); 
$cat_id = $CategoryPar->cat_ID;
  $args = array(
  'orderby' => 'name',
  'child_of'           => $cat_id,
  'hide_empty' => FALSE,
  'order' => 'ASC'
        );
$Ecategories = get_categories($args);

echo'<div class="cat-sub-title">';

foreach($Ecategories as $Ecategory) { 
 echo '<p><a href="' . get_category_link( $Ecategory->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $Ecategory->name ) . '" ' . '>' . $Ecategory->name.'</a> </p> ';
 echo '<div class="cat-sub-title-desc">'. $Ecategory->description . '</div>';
                   } 
echo'</div>';

?>

 <?php if( category_has_children( $cat ) == false) : ?>

 <?php get_template_part( 'loop' );?>

  <?php endif; ?> 

und den filter in functions.php

add_filter( 'category_description', 'cyb_trim_category_desc', 10, 2 );
function cyb_trim_category_desc( $desc, $cat_id ) {

    // wp_trim_words( $text, $num_words = 55, $more = null );
    $desc = wp_trim_words( $desc, 55, '...<p class="wrap-more-link"><a class="more-link" href="' . get_category_link( $cat_id ) . '">' . __("Read more >>", "text-domain" ) . '</a></p>' );

    return $desc;
}

erstes Bild - Klicken Sie auf eine der Kategorien im Hauptmenü, um zu dieser Seite zu gelangen (es handelt sich nicht um eine Vorlagenseite).

http://i57.tinypic.com/24eyyxc.png

das zweite Bild - Klicken auf einen der weiterführenden Links der untergeordneten Kategorien auf der vorherigen Seite führt zu dieser Seite - diese untergeordnete Kategorie hat keine Beiträge. Ich möchte, dass die vollständige Beschreibungslänge angezeigt wird. Dies sind die Körperklassen class = "archive Kategorie Kategorie-ewig-im-Feld Kategorie-23

http://i62.tinypic.com/30sin7t.png

1
tali

Sie müssen nur einige Bedingungen hinzufügen, um den Filter anzuwenden oder nicht. Wenn Sie beispielsweise das Zuschneiden nicht auf Kategoriearchivseiten anwenden möchten, könnte eine mögliche Lösung sein:

add_filter( 'category_description', 'cyb_trim_category_desc', 10, 2 );
function cyb_trim_category_desc( $desc, $cat_id ) {

    // Apply only if we are not in category archive template
    if( ! is_category() ) {

        // wp_trim_words( $text, $num_words = 55, $more = null );
        $desc = wp_trim_words( $desc, 55, '...<p class="wrap-more-link"><a class="more-link" href="' . get_category_link( $cat_id ) . '">' . __("Read more >>", "text-domain" ) . '</a></p>' );

     }

    return $desc;
}

Oder, wenn Sie den Zuschnitt nur auf eine bestimmte Seitenvorlage anwenden möchten:

add_filter( 'category_description', 'cyb_trim_category_desc', 10, 2 );
function cyb_trim_category_desc( $desc, $cat_id ) {

    // Apply only if we the current page use my-page-template.php
    if( is_page_template( 'my-page-template.php' ) ) {

        // wp_trim_words( $text, $num_words = 55, $more = null );
        $desc = wp_trim_words( $desc, 55, '...<p class="wrap-more-link"><a class="more-link" href="' . get_category_link( $cat_id ) . '">' . __("Read more >>", "text-domain" ) . '</a></p>' );

     }

    return $desc;
}

Sie müssen nur definieren, wann Sie den Zuschnitt anwenden möchten, und die entsprechende Bedingung anwenden.

Ein mögliches Problem ist, dass Sie category.php für die Kategorienliste verwenden. Diese Vorlage soll eine Liste von Posts anzeigen, die zu einer Kategorie gehören, und Sie sollten sie dafür verwenden. Sie sollten die Kategorienliste in einer anderen Vorlagendatei erstellen, z. B. einer benutzerdefinierten Seitenvorlage , damit Sie is_page_template() conditional verwenden können, genau wie im letzten Beispiel oben.

AKTUALISIEREN

Wie ich bereits sagte, sollten Sie die Verwendung der Vorlagendatei category.php vermeiden, um Ihre Kategorien aufzulisten. Die Vorlagendatei category.php dient zum Auflisten von Beiträgen, die zu einer bestimmten Kategorie gehören, und kann zu Problemen führen, da Sie sie für andere Zwecke verwenden.

In dem Bild, das Sie der Frage hinzugefügt haben, kann ich beispielsweise die Klasse category-2 für body-Element sehen. Das bedeutet, dass WordPress eine Abfrage erstellt hat, um Beiträge aus der Kategorie mit der ID = 2 abzurufen. Wenn die Vorlage category.php erreicht ist, haben Sie diese Abfrage verschwendet und eine andere Abfrage erstellt, um die Kategorien aufzulisten. Das verschwendet Ressourcen, die Geld kosten. Darüber hinaus kann es vorkommen, dass Sie Probleme haben, so wie Sie es gerade tun. Was passiert, wenn eine Kategorie mit ID = 2 keine Beiträge hat? Was ist die Logik für diese Situation in Ihrem Theme/Plugins/WordPress-Kern?

Verwenden Sie stattdessen eine bestimmte Seitenvorlagendatei, um die Kategorienliste zu erstellen. Beispielsweise könnten Sie die Vorlage page-categories-list.php erstellen:

<?php
/**
 * Template Name: Categories list page
 */


 // Here the code to build the categories list

?>

Erstellen Sie nun eine neue Seite, wählen Sie die Vorlage "Kategorielistenseite" und führen Sie die Bedingung im Filter für die Kategoriebeschreibung ein:

add_filter( 'category_description', 'cyb_trim_category_desc', 10, 2 );
function cyb_trim_category_desc( $desc, $cat_id ) {

    // Apply only if we the current page use my-page-template.php
    if( is_page_template( 'page-categories-list.php' ) ) {

        // wp_trim_words( $text, $num_words = 55, $more = null );
        $desc = wp_trim_words( $desc, 55, '...<p class="wrap-more-link"><a class="more-link" href="' . get_category_link( $cat_id ) . '">' . __("Read more >>", "text-domain" ) . '</a></p>' );

     }

    return $desc;
}

Nun sollten Sie die Kategorieseitenliste mit einem Beschreibungsauszug und ein Kategoriearchiv mit vollständiger Beschreibung und ohne Probleme haben, ob die Kategorie Beiträge hat oder nicht. Und was noch wichtiger ist: Verschwenden Sie keine Ressourcen, indem Sie Beiträge abfragen, die Sie nicht verwenden werden.

1
cybmeta