Wie ändere ich die Permalink-Struktur für den benutzerdefinierten Post-Typ und seine Taxonomien?

Dies ist ein erneuter Beitrag zu einer früheren Frage, die ich hatte, aber ich möchte jetzt näher auf Einzelheiten eingehen, um dies vollständig zu lösen.

Auch bei (normalen) Posts ist das Ändern des Permalinks so einfach wie das Wechseln zu Settings> Permalink und das Ändern zu allem, was Ihnen gefällt, wie die weit verbreitete %category%/%postname%.html . Das alles funktioniert. Wenn das für den benutzerdefinierten Posttyp und seine Taxonomien genauso einfach wäre.

Das möchte ich also erreichen.

  1. http://mywordpress.com/portfolio.html – Zeige alle Beiträge in allen Kategorien.
  2. http://mywordpress.com/portfolio/music/ – Zeige alle Beiträge in dieser Kategorie.
  3. http://mywordpress.com/portfolio/music/trance/ – Zeige alle Beiträge in dieser (untergeordneten) Kategorie an.
  4. http://mywordpress.com/portfolio/music/trance/Tiesto.html – Zeigen Sie den Beitrag an.

Was ich bis jetzt bekommen habe, ist folgendes:

  1. Zuerst habe ich ein custom_post_type namens project und eine taxonomy project_category erstellt .
  2. Ich habe ein Seiten-Portfolio erstellt und ihm ein Seiten-Template gegeben, das alle post_type = project Posts post_type = project . Wie kann ich dem Permalink von Seiten HTML hinzufügen? Es verlinkt nun zu http://mywordpress.com/portfolio, während ich http://mywordpress.com/portfolio.html möchte. Dies sollte das erste Problem lösen.
  3. Dann wird es schwierig, weil wir nicht wissen, wie viele Unterkategorien es gibt, vielleicht gibt es gar keine. Die Struktur, nach der wir portfolio/(CATEGORY PATH FROM TOP TO CHILD)/post.html ist also portfolio/(CATEGORY PATH FROM TOP TO CHILD)/post.html . Ich stecke immer noch an diesem Punkt fest. Ich denke, ich sollte irgendwie die letzte Kategorie zum Pfad hinzufügen und diese entlang der project_category übergeben , was zu einer taxonomy.php-Datei führen sollte, wo ich sie richtig verarbeiten kann.
  4. Ich habe das auch nicht angepackt, aber es sollte etwas mit %postname%.html am Ende von etwas zu tun haben.

Ich hoffe, dass mein Problem klar ist und dass es mutige Entwickler gibt, die mir helfen werden, dieses Problem anzugehen, das mich bereits vier volle Tage beschäftigt hat!

Solutions Collecting From Web of "Wie ändere ich die Permalink-Struktur für den benutzerdefinierten Post-Typ und seine Taxonomien?"

Ok ich denke ich könnte eine Lösung haben. Ich habe keine Ahnung, ob dies der richtige Weg ist, um dies zu erreichen, aber bis jetzt ist es das einzige, was zu funktionieren scheint.

 add_filter('rewrite_rules_array', 'mmp_rewrite_rules'); function mmp_rewrite_rules($rules) { $newRules = array(); $newRules['portfolio/(.+)/(.+?).html$'] = 'index.php?project=$matches[2]'; $newRules['portfolio/(.+)/?$'] = 'index.php?project_category=$matches[1]'; return array_merge($newRules, $rules); } add_filter('request', 'mmp_rewrite_request'); function mmp_rewrite_request($vars) { if (isset($vars['project_category'])) { if (strpos($vars['project_category'], '/') !== false) { $categories = explode('/', $vars['project_category']); $vars['project_category'] = $categories[count($categories) - 1]; } } return $vars; } 

2 verschiedene Methoden:

* Siehe Hinweise am Ende dieses Posts.

Zum Beispiel möchten Sie eine solche Permalink-Struktur haben:
/ MAIN_CATEGORY / SUB_CAT_2 / Another_SUBCAT / Meine-Post

Zuerst müssen Sie möglicherweise Permalinks auf /% category% /% postname% setzen . Dann…

METHODE 1:

Erstellen Sie STANDARD-Kategorien ( MAIN_CATEGORY , SUB_CAT_1 and etc.. ) und registrieren Sie den CUSTOM POST, einschließlich diesem Parameter:

 'taxonomies' => array('category'..) 

und verwenden Sie diese Codes, um Permalinks zu ändern: https://wordpress.stackexchange.com/a/195643/33667
Nach der Veröffentlichung eines CUSTOM POST (wenn dieser einer Kategorie zugeordnet ist) lautet die URL:
example.com/MAIN_CATEGORY/SUB_CAT_1/my-post

METHODE 2:

(ps diese Methode wird nicht empfohlen, wenn Sie planen, Hunderte oder Tausende von Posts zu veröffentlichen)

Registrieren Sie den CUSTOM POST (mit dem Namen MAIN_CATEGORY ), einschließlich dieser Parameter:

  "supports" => array('page-attributes'...... "hierarchical" => true, 

Dann veröffentlichen Sie benutzerdefinierte Beiträge wie folgt:
(dh veröffentlichen Sie mehrere benutzerdefinierte Posts mit dem Namen SUB_CAT_2, SUB_CAT_1.. Danach, wenn Sie einen anderen Post veröffentlichen, aber wählen Sie SUB_CAT_2 als Eltern.

ps
1) Wenn Sie Neuling sind, überprüfen Sie: Registrieren Sie CUSTOM POST und Registrierung CUSTOM POST mit TAXONOMY
2) Wenn Sie Suchfunktionen für Unterebenen benötigen, verwenden Sie die benutzerdefinierte Suchabfrage

Nachdem ich stundenlang den Kopf geschlagen hatte, fand ich dieses Plugin sehr hilfreich.

https://wordpress.org/plugins/custom-post-type-permalinks/

Unten ist der Screenshot der Optionen, die es gibt.

Bildbeschreibung hier eingeben