Permalink von Custom Post Type anpassen

  • Hallo liebe Community,

    ich habe bei mir folgendes Konstrukt:


    Leistungen

    • Sanitär

      • Küche
      • Bad
    • Heizung

      • Öl
      • Gas
      • Solar
      • Holz
    • Elektro

      • Kabelverlegung

    Leistungen ist eine Übersichtsseite, auf der Sanitär, Heizung und Elektro zu sehen ist. Im BackEnd wird es über den Menüpunkt "Seiten" verwaltet.
    Permalink: http://domain.de/leistungen/

    Klickt man dort bspw. auf Heizung, so gelangt man an eine Übersicht, mit Öl, Gas, Solar und Holz. Diese Seite ist im BackEnd eine Sub-Seite von Leistungen.
    Permalink: http://domain.de/leistungen/heizung/

    Klickt man nun auf bspw. Solar, gelangt man auf eine Detailseite, mit Beschreibungstext, Bildern, usw. Im BackEnd ist dies ein Custom Post Type "Leistung".
    Permalink: http://domain.de/leistung/solar/


    Der aufmerksame Leser bemerkt jetzt sicher, dass der Link nun leistung enthält, anstatt leistungen und, dass die heizung fehlt.
    Dies möchte ich ändern. Es soll für alle CPTs des Typs "Leistung" der Permalink leistungen enthalten, wie auch die vorangehende Kategorie (in diesem Falle: heizung).


    Wie schaffe ich dies?
    Ich würde mich sehr über Hilfe freuen.


    Danke schonmal :)

    Einmal editiert, zuletzt von Philex (14. März 2014 um 15:59)

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Hallo,

    das ist in erster Linie natürlich von deinem eingesetzten Theme abhängig bzw. von der verwendeten Struktur für den Aufbau der Taxonomy.

    Schau dir mal in der Dokumentation die Arbeitsweise von

    PHP
    <?php register_taxonomy( $taxonomy, $object_type, $args ); ?>

    hier an und ganz speziell den Abschnitt über:

    Code
    [B]rewrite [/B]([URL="http://codex.wordpress.org/How_to_Pass_Tag_Parameters#Boolean.2Farray"]boolean/array[/URL]) (optional) Set to false to prevent automatic URL rewriting a.k.a. "pretty permalinks". Pass an $args array to override default URL settings for permalinks as outlined below:Default: true
    [LIST]
    [*]'slug' - Used as pretty permalink text (i.e. /tag/) - defaults to $taxonomy (taxonomy's name slug)
    [*]'with_front' - allowing permalinks to be prepended with front base - defaults to true
    [*]'hierarchical' - true or false allow hierarchical urls (implemented in [URL="http://codex.wordpress.org/Version_3.1"]Version 3.1[/URL]) - defaults to false
    [/LIST]


    Wenn du die Parameter entsprechend in deinem Theme anpasst, kannst du dir die die Pfade wie in deinem Beispiel erzeugen.

    Beste Grüße,
    wpGO

  • Ich bin mittlerweile ziemlich frustriert ._.

    Habe diese Rewrite-Geschichte in zahlreichen Variationen eingefügt, aber das klappt nicht. Momentan bin ich bei einem Plug-in gelandet, welches heißt [COLOR=#000000][FONT=Open Sans][size=10][FONT=arial]Custom Post Type Permalinks[/FONT][/SIZE].
    [/FONT][/COLOR]
    Meine Einstellung, die bisher am vielversprechendsten aussieht, schaut so aus:

    In den Plug-in-Einstellungen steht bei den Permalink-Settings für CPT leistung folgendes im Textfeld: /%postname%/

    Der so erzeugte Permalink für Solar lautet nun korrekterweise:
    [size=10]http://domain.de/leistungen/heizung/solar/

    [/SIZE]Allerdings wird der Beitrag Solar nicht gefunden. Ich stehe vor einem 404 Error :(

    Einmal editiert, zuletzt von Philex (24. März 2014 um 11:37)

  • Hallo Philex,

    hast du mal versucht danach die Permalinks unter Einstellungen > Permalinks zu aktualisieren?

    Beste Grüße,
    wpGO

  • Hi,

    jup, das mache ich nach jeder Änderung :/


    Kann es irgendwas damit zu tun haben, dass ich ja die Seite Leistungen mit den Unterseiten Sanitär, Heizung und Elektro habe?

    Die Permalinks zu den 4 Seiten sind ja:
    http://domain.de/leistungen/
    http://domain.de/leistungen/sanitar/
    http://domain.de/leistungen/heizung/
    http://domain.de/leistungen/elektro/

    Beißt sich dieses irgendwie mit dem CPT, welches ja auch http://domain.de/leistungen/.../.../ im Permalink enthalten soll?

    Einmal editiert, zuletzt von Philex (24. März 2014 um 13:12)

  • Zitat

    'rewrite' => array('slug' => '.', 'with_front' => false)

    was soll der "." bei "'slug' => '.'"?

    ich bin der Meinung das der slug 'leistungen' heissen sollte und nicht '.'

    Damit wäre der CPT schonmal als

    http://domain.de/leistungen/

    aufrufbar.

    Nun müsstest du dir nen custom rewrite schreiben der dieses abhandelt

  • achso... stimmt leistungen ist ja auch eine seite....

    Da frag ich mich: warum nen eigenen CPT? der nützt dir doch so dann überhaupt nichts.

    Da reichen doch die Standart seite für aus.

    für eine Seite deren Elterseite das Kind eine Weitere ist sieht das bei mir dann so aus:

    http://domain.de/beispiel-seite/blub/blah/

    Beispiel-seite = erste elternseite
    blub = Kind von Beispiel-seite und eltern von blah
    blah = Kind von blub

    Einmal editiert, zuletzt von Meathor (25. März 2014 um 10:58)

  • Ansich ja, aber das würde zu Lasten der Benutzerfreundlichkeit im BackEnd gehen, weil es in der Praxis mehr als nur die hier aufgeführten Leistungen sind.

    Also theoretisch wäre dies ein Ausweg, ja. Es muss aber doch trotzdem möglich sein, die Sache über einen CPT zu lösen?

  • Da würde mir nur der ausweg über ein Custom Rewrite einfallen in dieser art:

    Ob ist nur nen Beispiel..... muss natürlich deinen bedürfnissen angepasst und auch im theme entsprechend (Seiten Template) verwendet werden.

  • Yay! Ich habe es hinbekommen.

    Hier die Lösung:


    Danke danke danke! :smile:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!