WordPress SLUGS: Kategorien mit Seiten überschreiben?

Lesezeit: 3 Minuten

Also arbeite ich an einer großen Medienseite mit WordPress. Ich möchte benutzerdefinierte Kategorieseiten erstellen, anstatt durchgehend eine pauschale Vorlage zu verwenden.

Mir ist bewusst, dass ich die PHP-Dateien kopieren, umbenennen und anpassen kann. Aber ich bin auf einen einfacheren Weg gestoßen, insbesondere im Hinblick darauf, dass nicht codierende Typen Änderungen vornehmen können. Es scheint nur ein bisschen zu einfach zu sein …

Nehmen wir also an, meine aktuellen Permalinks/URLs lauten wie folgt:

POSTS: domain.com/2016/10/postname.html
CATEGORIES: domain.com/c/category-name/
PAGES: domain.com/page-name/

Ich habe entdeckt, dass ich eine Seite erstellen und ihr den Permalink /c/ geben kann, also würde es so aussehen:

domain.com/c/

Ich habe festgestellt, dass, wenn ich eine untergeordnete Seite mit /c/ als übergeordnete Seite erstelle, diese folgendermaßen aussieht:

domain.com/c/page-name/

Wenn ich dieser Seite denselben SLUG wie eine Kategorie gebe und mich dann zu der Seite durchklicke, überschreibt die Seite die Kategorie. Um genauer zu sein, sagen wir, ich habe eine Kategorie namens Videos, dann erstelle ich eine Seite unter der /c/ übergeordneten Seite, die auch Videos genannt wird, passiert Folgendes:

The PAGE at /c/videos/
overrides the CATEGORY at /c/videos.

Es scheint einfach zu schön, um wahr zu sein? Kann jemand einen Grund sehen, warum ich nicht so vorgehen würde, insbesondere wenn die Site in Zukunft von nicht codierenden Typen verwendet wird, die in der Lage sein möchten, einfache Änderungen über das Dashboard im Gegensatz zum Backend vorzunehmen ?

Danke im Voraus.

  • Hmmm, der Link für die Videokategorie ist domain.com/videos und der Link für die untergeordnete Seite ist domain.com/c/videos. Recht?

    – Andy Tschiersch

    6. Oktober 2016 um 6:19 Uhr

  • Entschuldigung, ich hätte sagen sollen, dass der Permalink für Kategorien in /c/ geändert wurde. Bevor ich also die untergeordnete Seite hatte, lautete der Link für die Videokategorie domain.com/c/videos, und sobald ich die untergeordnete Seite hatte, lautete der Link für die untergeordnete Seite domain.com/c/videos. Und wenn ich mich zu dieser URL durchklicke, besuche ich die untergeordnete Seite, nicht das Kategoriearchiv.

    – BHIZ

    7. Oktober 2016 um 0:24 Uhr

  • Ich habe versucht, dies zu tun, aber in meiner Installation überschreibt die Kategorieseite die Seite “Seite”. Ich habe auch versucht, den Kategorie-Slug mit dem Yoast-SEO-Plugin zu entfernen … das gleiche Problem mit dem Abgleich. Ich habe die Permalinks-Seite besucht (und gespeichert), um die Regeln zum Umschreiben zu löschen, aber es geht nicht …

    – jezz

    18. November 2016 um 20:32 Uhr

Dazu muss ein kleiner Filter in der function.php-Datei Ihres Themes hinzugefügt werden. Ich habe diesen Code einer anderen Antwort auf StakeOverflow entnommen und Sie können ihn lesen hier

function loadPageFirst() {
    // get the actual category
    $actualCategory = get_category( get_query_var('cat') );
    // get the page with the same slug
    $matchingPage = get_page_by_path( $actualCategory->slug );

    // If no match, load the normal listing template and exit (edit if you are using a custom listing template, eg. category.php)
    if (!$matchingPage) {
        include( get_template_directory() . '/archive.php');
        die();
    }

    // Make a new query with the page's ID and load the page template
    query_posts( 'page_id=' . $matchingPage->ID );
    include( get_template_directory() . '/page.php');
    die();
}
add_filter( 'category_template', 'loadPageFirst' );

1428510cookie-checkWordPress SLUGS: Kategorien mit Seiten überschreiben?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy