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.
Was ich bis jetzt bekommen habe, ist folgendes:
custom_post_type
namens project und eine taxonomy
project_category erstellt . 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. 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. %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!
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; }
* 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…
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
(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.