Wie erstelle ich eine Kategorie -Seite auf der Blog -Homepage?
-
16-10-2019 - |
Frage
Ich möchte eine Kategorie -Seite als Startseite meines Blogs verwenden. Ist das möglich und wie kann ich das tun? Es versuchte es mit einer .htacces -Umschreiben -Regel, aber das hat nicht funktioniert.
Lösung
Aktualisieren
Wenn Sie alle anderen Lösungen beseitigen, gibt es mindestens einen: verbleiben: template_redirect
:
function wpse121308_redirect_homepage() {
// Check for blog posts index
// NOT site front page,
// which would be is_front_page()
if ( is_home() ) {
wp_redirect( get_category_link( $id ) );
exit();
}
}
add_action( 'template_redirect', 'wpse121308_redirect_homepage' );
Sie müssen die entsprechende Kategorie bestehen $id
, Natürlich.
Der Vorteil der Umleitung bei template_redirect
ist, dass Sie nur eine Vorlageladung erhalten, anstatt eine zweite Weiterleitung nach Die Vorlage lädt.
Beachten Sie, dass Sie den Prozess noch früher einschließen können, z. B. bei pre_get_posts
, Dadurch speichern Sie möglicherweise eine gesamte Anfrage zur Abfrage:
add_action( 'pre_get_posts', 'wpse121308_redirect_homepage' );
Ursprüngliche Antwort
Wenn Sie nur eine bestimmte Kategorie im Index der Blog -Beiträge anzeigen möchten, können Sie dies mit einem einfachen Filter des Haupts erreichen $wp_query
bei pre_get_posts
:
function wpse1862_pre_get_posts( $query ) {
// Only modify the main query
// on the blog posts index page
if ( is_home() && $query->is_main_query() ) {
$query->set( 'category_name', 'category-slug-here' );
}
}
add_action( 'pre_get_posts', 'wpse1862_pre_get_posts' );
Wenn Sie die ändern möchten Schablone, Dann können Sie eines von zwei Dingen tun:
- Ein ... kreieren
home.php
mit dem gewünschten Markup - Verwenden
template_redirect
oderhome_template
WordPress zu zwingen, Ihre einzuschließencategory.php
Schablone.
Bearbeiten
Und wenn Sie möchten, dass die Blog -Posts indexe URL aussehen wie:
www.example.com/main
Dann kannst du verwenden ein Statische Titelseite, und weisen Sie eine statische Seite mit dem Namen "Main" als Index des Blogs zu.
Und wenn dies Ihr Ziel ist:
Ich möchte wirklich die Weiterleitung. Ich möchte die Startseite (
http://example.com/
) Um auf die Kategorie -Seite umzuleiten (die wie aussieht wiehttp://example.com/main/
)
... dann ist die akzeptierte Antwort für Ihren Anwendungsfall korrekt.
Andere Tipps
Die Kategorie -Seite kann keine Homepage sein (funktioniert einfach nicht so).
Es gibt zwei weitere Optionen:
- Beschränken Sie die Homepage auf Beiträge aus spezifischer Kategorie (schließen, aber nicht dasselbe).
- Homepage auf die tatsächliche Kategorieseite umleiten.
Da es Ihnen gut zu scheinen, versuchen Sie es zu folgen. Schaffen home.php
Vorlage in Ihrem Themenverzeichnis mit folgenden Inhalten:
<?php
wp_redirect( 'http://www.yoursite.com/category/category-slug' );
?>
Es gibt wahrscheinlich eine ordentlichere Möglichkeit, dies mit Haken zu tun, aber nichts, woran ich jetzt denken kann.
Die semantischste Möglichkeit, dies zu tun, anstatt eine Umleitung (zusätzliche Verbindungszeit) zu verwenden, besteht darin, eine benutzerdefinierte Seitenvorlage zu erstellen.
neue Seite:
/* Template Name: New Homepage by Cat */
<?php query_posts('cat_id'=>'3');?>
<--insert loop-->
Fügen Sie einfach einen Kategoriefilter in Ihre Index.php -Abfrage in Ihrer Vorlage hinzu. Simples
Wenn Sie in eine bestimmte Kategorie-Kategorie-ID 3 umleiten möchten, kopieren Sie den Inhalt von category.php und erstellen
* Template Name: New Homepage by Cat 3*/
<?php query_posts('cat_id'=>'3');?>
<--insert loop-->
In WordPress Reading müssen wir als Beiträge nach Hause und für die Homepage die neue Homepage von CAT 3 als Vorlage aus Wählen.