it-swarm.com.de

Erzwinge, dass Wordpress Seiten anstelle von Kategorien anzeigt

Ich versuche, eine SILO-Struktur auf einer meiner WordPress-Sites zu erstellen.

Ich habe diese Option im Yoast SEO-Plugin "Entferne die Kategoriebasis (normalerweise/category /) von der Kategorie-URL" immer aktiviert.

Daher haben meine Kategorieseiten diese URL: sitename.com/Apple/ (wobei "Apple" die Kategorieseite ist)

Jetzt möchte ich eine neue "Seite" mit dem gleichen Slug erstellen, Apple.

Ich kann auf einfache Weise eine neue "Apple" -Seite erstellen. Wenn ich jedoch zu sitename.com/Apple/ gehe, wird anstelle der neu erstellten Seite die Kategorieseite angezeigt.

Meine Frage: Gibt es eine Möglichkeit, die Standardpriorität der Kategorie gegenüber einer Seite zu "überschreiben"? Ich möchte die Seite anzeigen, weil ich die Kontrolle darüber habe. Ich kann sie anpassen, mehr Inhalte hinzufügen und sie einfach ändern. Außerdem helfen mir Seiten dabei, meine Website besser zu strukturieren.

Schätze deine Hilfe!

4
Sid

Eine mögliche Lösung ist, nicht die Kategoriebasis zu ändern und unverändert zu lassen, sondern stattdessen die Ausgabe eines Kategorielinks zu ändern, um die Kategoriebasis über einen Filter zu entfernen. Dies führt natürlich zu einem 404, wenn Sie keine Seite erstellt haben, auf die diese Links verweisen, sodass für jede Kategorie eine Seite erstellt werden muss.

function wpa_alter_cat_links( $termlink, $term, $taxonomy ){
    if( 'category' != $taxonomy ) return $termlink;

    return str_replace( '/category', '', $termlink );
}
add_filter( 'term_link', 'wpa_alter_cat_links', 10, 3 );

Sie werden dies wahrscheinlich gründlich auf Nebenwirkungen testen wollen, die Verwendung erfolgt auf eigenes Risiko!

EDIT- nur Links der obersten Kategorie ändern:

function wpa_alter_cat_links( $termlink, $term, $taxonomy ){
    if( 'category' == $taxonomy && 0 == $term->parent ){
        return str_replace( '/category', '', $termlink );
    }
    return $termlink;
}
add_filter( 'term_link', 'wpa_alter_cat_links', 10, 3 );
5
Milo

Ich habe die folgende, ziemlich einfache Funktion erstellt, um den Seiten beim Laden des Inhalts eine höhere Bedeutung als den Kategorien zu verleihen.

(Hinweis: Dies ist möglicherweise nicht die beste, aber eine einfache Möglichkeit. Ich habe ein Problem festgestellt, bei der Verwendung des Plugins "Erweiterte benutzerdefinierte Felder" werden standardmäßig weder die benutzerdefinierten Felder der alten noch der neuen Seite eingefügt. Hinzufügen von get_queried_object()->ID Dies wurde durch den zweiten Parameter von ACF get_field() behoben. Testen Sie es sorgfältig in Ihrer WP Umgebung.)

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' );

Sie können es in die functions.php Ihres Themas aufnehmen. Mit dem Yoast SEO-Plugin scheint dies in Ordnung zu sein.

2
bencergazda

Hier gibt es eine super einfache und perfekt funktionierende Antwort: https://stackoverflow.com/questions/32310453/make-wordpress-use-the-page-instead-of-category

Der Vollständigkeit halber:

Hintergrund

  • example.com ist die Domain
  • Ich habe eine WP Seite namens "foobar" mit Inhalt
  • Ich habe eine WP Beitragskategorie namens "foobar"
  • Ich habe einen WP Beitrag mit dem Titel "Lustige Dinge mit Foobars zu tun" und die Kategorie ist auf "Foobar" gesetzt.

Erwartungen

  • Wenn ich zu example.com/foobar gehe, möchte ich die Seite zu foobars sehen, nicht eine WP Kategorieseite, auf der alle Blog-Beiträge mit dieser Kategorie angezeigt werden.
  • Wenn ich zum Blog-Post über lustige Dinge gehe, lautet die URL example.com/foobar/fun-things-to-do-with-foobars/

Setup

Hier ist mein Setup (es sind keine zusätzlichen Plugins oder Code-Änderungen erforderlich). Einige der installierten Plugins sind WP Rocket und Yoast, auf die ich mich in diesem Thread konzentrieren werde.

  1. WP Dashboard-> Einstellungen-> Permalinks

  2. Wählen Sie "Benutzerdefinierte Struktur" und geben Sie /% category% /% postname%/in das Feld ein

  3. Ändern Sie auf derselben Seite "Kategoriebasis" in einen einzelnen Punkt. "." (keine Anführungszeichen, nur ein Punkt/Punkt/Punkt

Ich habe Yoast installiert, das ich eingerichtet hatte, um die Permalink-Einstellungen zu überschreiben, aber ich glaube, dies hat meine Aufgabe in die Quere gebracht.

  1. WP Dashboard-> SEO-> Erweitert-> Permalinks (tab)

  2. "Change URLs-> Strip the category base ..." = Behalten

  3. Dann müssen Sie den Cache löschen. Ich benutze WP Rocket zum Cachen, also habe ich den Cache geleert und jetzt funktioniert alles so, wie es sollte.

Bearbeiten: Stellen Sie sicher, dass Sie Ihre Änderungen nach den Schritten 3 und 5 speichern

1
Paul Woods

Hängt davon ab. Wenn Sie versuchen, zwei verschiedene Seiten mit derselben URL einzurichten, ist dies keine gute Idee. Wenn Sie sich jedoch nicht für Kategorieseiten interessieren, können Sie diese auf Ihre Seiten umleiten.

 RedirectMatch 301 ^/category/(.*)$ /$1

Dieser Code wird in .htaccess abgelegt und leitet/category/page nach/page/weiter.

0
JMau

Die "WordPress-Methode" hierfür wäre, eine benutzerdefinierte PHP-Vorlage für Ihre Kategorieseite zu erstellen und dort Ihre Anpassungen vorzunehmen, anstatt eine eindeutige "Seite" zu erstellen.

Es sind auch zahlreiche Plug-ins verfügbar, mit denen Sie der Kategoriearchivseite Bilder und andere benutzerdefinierte Felder hinzufügen können. Dies ist möglicherweise eine bessere Option, wenn Sie die Designdateien nicht ändern möchten.

Alternativ würde ich vorschlagen, eine Kategoriebasis hinzuzufügen, die möglicherweise eines Ihrer primären Zielschlüsselwörter ist

0
qccreative

Zuerst die Kategorie in yoast entfernen. Die Kategorie in yoast nicht indizieren, aber vorher sollte die Permalink-Struktur als /% category% /% postname%/festgelegt werden.

0
Vale