Dies ist eine Wiederholung einer früheren Frage, die ich hatte, aber ich gehe jetzt gerne auf weitere Details ein, um dies vollständig lösen zu können.
Wenn Sie also (normale) Posts haben, können Sie den Permalink ganz einfach unter "Einstellungen"> "Permalink" ändern, indem Sie ihn in einen beliebigen Wert ändern, z. B. den allgemein verwendeten %category%/%postname%.html
. Das alles funktioniert. Wenn dies nur für den benutzerdefinierten Beitragstyp und auch für die Taxonomien so einfach wäre.
Das ist es, was ich gerne mache.
Was ich bisher bekommen habe, ist das Folgende:
custom_post_type
mit dem Namen project und eine taxonomy
project_category erstellt.post_type = project
-Posts aufgelistet sind. Wie kann ich .html zum Permalink von Seiten hinzufügen? Es verlinkt jetzt auf http://mywordpress.com/portfolio , während ich möchte http://mywordpress.com/portfolio.html . Dies sollte das erste Problem lösen.portfolio/(CATEGORY PATH FROM TOP TO CHILD)/post.html
. Ich stecke immer noch fest. Ich denke, ich sollte irgendwie die letzte Kategorie zum Pfad hinzufügen und diese an project_category übergeben, was zu einer taxonomy.php-Datei führen sollte, in der ich sie richtig verarbeiten kann.%postname%.html
zu tun haben.Ich hoffe, mein Problem ist klar und es gibt mutige Entwickler, die mir helfen werden, dieses Problem anzugehen, das mich bereits seit vier VOLLEN Tagen beschäftigt hat!
Ok, ich denke, ich könnte eine Lösung haben. Ich habe keine Ahnung, ob dies der richtige Weg ist, aber im Moment scheint es das einzige zu sein, 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;
}
Nachdem ich mir stundenlang den Kopf geschlagen hatte, fand ich dieses Plugin sehr hilfreich.
https://wordpress.org/plugins/custom-post-type-permalinks/
Unten sehen Sie einen Screenshot der verfügbaren Optionen.
* Siehe Hinweise am Ende dieses Beitrags.
zum Beispiel möchten Sie eine solche Permalink-Struktur haben:
/MAIN_CATEGORY/SUB_CAT_2/Another_SUBCAT/my-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 des folgenden Parameters:
'taxonomies' => array('category'..)
und benutze diese Codes, um die Permalinks zu ändern: https://wordpress.stackexchange.com/a/195643/33667
Nach dem Veröffentlichen eines CUSTOM POST (falls unter einer Kategorie angehängt) lautet die URL:example.com/MAIN_CATEGORY/SUB_CAT_1/my-post
(S. diese Methode wird nicht empfohlen wenn Sie vorhaben, Hunderte oder Tausende von Posts zu veröffentlichen)
registrieren Sie CUSTOM POST (mit dem NamenMAIN_CATEGORY
), einschließlich der folgenden Parameter:
"supports" => array('page-attributes'......
"hierarchical" => true,
dann veröffentlichen Sie benutzerdefinierte Beiträge wie folgt:
(d. h. veröffentlichen Sie mehrere benutzerdefinierte Posts mit dem Namen SUB_CAT_2, SUB_CAT_1..
. Danach, wenn Sie einen anderen Post veröffentlichen, wählen Sie jedoch SUB_CAT_2
als übergeordnetes Element.
p.s.
1) Wenn Sie Neuling sind, überprüfen Sie: CUSTOM _ registrierenPOST und CUSTOM _ registrierenPOST bei TAXONOMY
2) Wenn Sie eine Suchfunktion für Unterebenen benötigen, verwenden Sie Benutzerdefinierte Suchabfrage