Legen Sie Post- und Inhaltslimits für Startseiten, Blogs und Archivseiten fest
Veröffentlicht: 2013-08-15In diesem Tutorial werfen wir einen Blick auf die integrierten Genesis-Einstellungen, mit denen Sie die Inhaltsbeschränkungen in Ihren Archiven und Blog-Seitenvorlagen steuern können.
Wir werden auch die WordPress-Leseeinstellungen berücksichtigen und wie sie sich auf die Genesis-Einstellungen auswirken.
Darüber hinaus sehen wir uns einige funktionierende Code-Snippets an, mit denen Sie Folgendes weiter anpassen können:
- Blog-Seite
- Archiv
- Startseite
- Gitterschleife
- Benutzerdefinierte Beitragstypen
Wir verwenden das neue untergeordnete Eleven40 Pro-Theme von StudioPress sowie das untergeordnete Genesis 2.0 Sample-Theme, das keine Grid-Loop- oder Startseiten-Widgets enthält.
Das Eleven40 Pro-Design enthält zusammen mit mehreren anderen StudioPress-Designs wie dem Balance-Design eine benutzerdefinierte Rasterschleife in der Datei home.php.
Leseeinstellungen in WordPress
Schauen wir uns zunächst die vorhandenen Einstellungen an, die WordPress in den Leseeinstellungen bereitstellt. Diese Einstellungen wirken sich darauf aus, wie viele Beiträge auf all Ihren Archivseiten angezeigt werden, einschließlich:
- Seite mit Blog -Einträgen
- Archivseiten einschließlich Autoren-, Blog-, Kategorie-, Such- und Tag-Seiten
Die Leseeinstellungen bestimmen, wie viele Posts auf all Ihren Archivseiten und Ihrer Homepage angezeigt werden, wenn Sie die Standardeinstellungen beibehalten, wie Sie im obigen Screenshot sehen.
Die Leseeinstellungen steuern NICHT Ihre Blog-Seite, da dies durch die Blog-Seiten-Vorlageneinstellungen gesteuert wird, die Genesis unter Genesis > Themeneinstellungen enthält:
Schauen wir uns dazu ein Beispiel an: Wenn Ihre Leseeinstellungen so eingestellt sind, dass 5 Posts angezeigt werden, zeigen Ihre Startseite und alle Archive 5 Posts an, Ihre Blog-Seite zeigt jedoch das an, was Sie für die Anzeige eingestellt haben.
Auch wenn die Leseeinstellungen auf eingestellt sind: Blogseiten zeigen höchstens 5 an, gilt dies nur für die Startseite und NICHT, wenn Sie eine statische benutzerdefinierte Seite mit der Blogseitenvorlage für Ihre benutzerdefinierte Blogseite verwenden.
Diese Einstellungen werden von den Vorlageneinstellungen der Genesis-Blogseite gesteuert, wie im obigen Screenshot gezeigt.
Anpassen des standardmäßigen Post-Limits für die Homepage
Wenn Sie möchten, dass Ihre Archive die in den Leseeinstellungen festgelegte Anzahl anzeigen, aber eine andere Anzahl von Beiträgen auf Ihrer Startseite anzeigen, müssen Sie einen benutzerdefinierten Code in der Datei functions.php Ihrer untergeordneten Themen verwenden:
add_action( 'pre_get_posts', 'change_posts_number_home_page' ); function change_posts_number_home_page( $query ) { if ($query->is_home() && $query->is_main_query() ) { $query->set( 'posts_per_page', 5 ); <pre><code>return $query; } </code></pre> }
Der obige Code wirkt sich nicht auf die Anzahl der in Ihrem Archiv angezeigten Beiträge aus.
Ändern Sie die Anzahl der im Archiv angezeigten Beiträge
Sie können diesen Code auch verwenden, um zu ändern, wie viele Beiträge auf verschiedenen Archiven wie Kategorie- und Autorenarchivseiten angezeigt werden, ohne die Leseeinstellungen zu beeinflussen, die die anderen steuern:
add_action( 'pre_get_posts', 'change_number_posts_per_category' ); function change_number_posts_per_category( $query ) { <pre><code>if ( is_category('29') ) { $query->set( 'posts_per_page', 1 ); return $query; </code></pre> }}
Anpassen des Grid-Loop-Post-Limits auf der Startseite
Wenn Ihr Design eine Rasterschleife in der Datei home.php enthält, können Sie einfach steuern, wie viele hervorgehobene Beiträge in voller Breite und wie viele Rasterschleifen-Beiträge auf Ihrer Homepage angezeigt werden.
Darüber hinaus können Sie auch das Inhaltslimit sowohl für hervorgehobene Beiträge als auch für Beiträge, die nur im Raster auf der Homepage angezeigt werden, steuern, da der Code in der Datei home.php enthalten ist.
Alle Einstellungen befinden sich im Grid-Loop-Code der Datei home.php:
<?php remove_action( 'genesis_loop', 'genesis_do_loop' ); add_action( 'genesis_loop', 'eleven40_grid_loop_helper' ); /** Add support for Genesis Grid Loop */ function eleven40_grid_loop_helper() { <pre><code>if ( function_exists( 'genesis_grid_loop' ) ) { genesis_grid_loop( array( 'features' => 1, 'feature_image_size' => 0, 'feature_image_class' => 'alignleft post-image', 'feature_content_limit' => 0, 'grid_image_size' => 'grid-featured', 'grid_image_class' => 'grid-featured', 'grid_content_limit' => 250, 'more' => __( '[Continue reading]', 'eleven40' ), 'posts_per_page' => 5, ) ); } else { genesis_standard_loop(); } </code></pre> } genesis();
Der obige PHP-Code ist so eingestellt, dass er 5 Beiträge anzeigt. Beginnend mit einem hervorgehobenen Beitrag, der die volle Inhaltsbreite und unbegrenzte Inhaltsbeschränkung anzeigt, da er auf 0 gesetzt ist, sodass der vollständige Beitragsinhalt des ersten Beitrags angezeigt wird.
Es zeigt dann 4 Beiträge in einem Raster an, wobei jeder Satz auf ein Inhaltslimit von 250 mit Beitragsbild eingestellt ist, wenn Sie für jeden Beitrag einen hochgeladen und als Beitragsbild festgelegt haben.
Diese Einstellungen werden von den Leseeinstellungen überschrieben, d. h. wenn Ihre Leseeinstellungen so eingestellt sind, dass 20 Beiträge angezeigt werden, wird dies auf Ihrer Homepage angezeigt, unabhängig von den Einstellungen in der obigen Rasterschleife.
Um dies anzupassen, können Sie diesen PHP-Code unten in der Datei „functions.php“ Ihres untergeordneten Themas verwenden, um Ihre Leseeinstellungen für Ihre Rasterschleife zu überschreiben und daher die Leseeinstellungen zu verwenden, um zu steuern, wie viele Beiträge auf allen Ihren Archivseiten angezeigt werden.
Grid-Loop-Posts-Limit ändern
add_action( 'pre_get_posts', 'change_num_posts_in_grid' ); function change_num_posts_in_grid( $query ) { global $wp_the_query; if( $query->is_main_query() && is_home() ) { $query->set( 'posts_per_page', '5' ); } }
Der obige Code kann auch so modifiziert werden, dass er auf allen anderen Seiten funktioniert, die die Grid-Schleife verwenden, indem Sie einfach das Bedingungs-Tag im Code von is_home() in etwas anderes ändern.
Unterseiten der Startseite
Wenn Sie auch die Anzahl der auf Unterseiten angezeigten Beiträge für Raster- oder Standardauszüge steuern möchten, können Sie Code wie diesen verwenden:
add_action( 'pre_get_posts', 'change_num_posts_in_grid' ); function change_num_posts_in_grid( $query ) { global $wp_the_query; if( $query->is_main_query() && is_home() && is_paged() ) { $query->set( 'posts_per_page', '5' ); } }
Erfahren Sie mehr über die Verwendung der Genesis Grid Loop für verschiedene Home-Post-Layouts.
Ändern Sie das Inhaltslimit für eine bestimmte Kategorie
Sie können auch die WordPress-Leseeinstellungen überschreiben und das Auszugslimit für jedes Archiv anpassen, einschließlich Ihrer Startseiten-, Autoren-, Blog-, Kategorie-, Such- und Tag-Seitenarchive.
add_filter('excerpt_length', 'specific_category_excerpt_length'); function specific_category_excerpt_length($length) { if(is_category('29') ) { return 20; } }
Der obige Code ändert die Auszugslänge auf der Kategorieseite mit einer ID von 29 auf 20 Wörter.
Sie können auch HTML-Formatierungs-Tags, die von WordPress aus Auszügen entfernt wurden, wieder hinzufügen.
Darüber hinaus können Sie diesen Code unten verwenden, um das Inhaltslimit von Auszügen in bestimmten Archiven zu steuern und dann auch andere so einzustellen, dass sie ein festgelegtes Limit anzeigen. Hinweis: Ihr Genesis > Themeneinstellungen > Inhaltsarchive muss so eingestellt sein, dass Auszüge und keine Inhaltsbeschränkung angezeigt werden.
add_filter('excerpt_length', 'specific_category_excerpt_length'); function specific_category_excerpt_length($length) { if(in_category('web-design') ) { return 20; } else { return 500; } }
Der obige Code zeigt ein Inhaltslimit für Auszüge in der Webdesign-Kategorie von 20 und alle anderen Archive zeigen ein Limit von 500 an.
Hier ist etwas PHP-Code, der eine Reihe von mehreren Kategorien enthält:
add_filter('excerpt_length', 'specific_category_excerpt_length'); function specific_category_excerpt_length($length) { if(in_category(array( 153,154,156 ) ) ) { return 100; } else { return 300; } }
Dieser Code verwendet die Kategorie-IDs und zeigt ein Inhaltslimit von 100 für 3 Kategorien an. Alle anderen Archive zeigen ein Limit von 300 an.
Erfahren Sie mehr über das Anpassen von Auszügen.
Benutzerdefinierter Beitragstyp (CPT)
Hier ist der Code, der bestimmt, wie viele Beiträge in einem benutzerdefinierten Beitragstyp auf der Archivseite des CPT angezeigt werden:
add_action( 'pre_get_posts', 'cpt_archive_items_limit' ); function cpt_archive_items_limit( $query ) { <pre><code>if( $query->is_main_query() && !is_admin() && is_post_type_archive( 'your-cpt' ) ) { $query->set( 'posts_per_page', '3' ); } </code></pre> }
Ersetzen Sie einfach your-cpt im obigen Code durch den Namen Ihres benutzerdefinierten Beitragstyps.
Fazit
Sie können sich selbst davon überzeugen, dass die Verwendung von WordPress-Hooks und -Filtern auch in Genesis perfekt funktioniert.
Ähnliche Lösungen
- Einstellung zum Anzeigen von Eintragsauszügen auf jeder Archivseitenvorlage
- Code zum Festlegen des Limits für das Genesis-Inhaltsarchiv
- Zeigen Sie den vollständigen Beitragsinhalt oder Auszüge auf bestimmten Archivseiten an
- Passen Sie Archivseiten bedingt mit Pre Get Posts an
- Zeigen Sie Auszüge auf der Blog-Seite und den vollständigen Inhalt in anderen Archiven in Genesis an