Wie ändere ich die Permalink-Struktur für den benutzerdefinierten Beitragstyp und dessen Taxonomien?
-
-
Die Lösung,dieichin der letzten Fragegegeben habe,hätte sofunktionieren sollen,wenn Sie sie richtigimplementiert hätten.Daseinzigeist,dass Sie den HTML-Teilnichtbekommen könnenThe solution I gave in the last question should have worked that way, if you implemented it correctly. The only thing is you can't get the html part
- 1
- 2011-09-20
- Manny Fleurmond
-
Ja,aberes war aneinen bestimmten Pfadgebunden,alsonur Kategorie/Unterkategorie/Seite,währendesmöglicherweise keine Unterkategorien odernochmehrgibt.Dasist dynamischer.Yes but it was locked to a specific path, so only category/subcategory/page while there might not be subcategories or even more. This is more dynamic.
- 0
- 2011-09-20
- Mark
-
Oderich habeesnicht richtigimplementiert;)Or I did not implement it properly ;)
- 0
- 2011-09-20
- Mark
-
3 Antworten
- Stimmen
-
- 2011-09-20
Ok,ich denke,ich könnteeine Lösung haben.Ich habe keine Ahnung,ob dies der richtige Wegist,um dies zuerreichen,aberim Moment scheintes daseinzige zu sein,was zufunktionieren 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; }
Ok I think I might have a solution. I have no idea if this is the right way to accomplish this, but as for now it's the only thing that seems to work.
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; }
-
Der Anforderungsfilteristeine gute Möglichkeit zum Filtern,wenn wirnacheiner Kategorie (tatsächlich Begriff) undeinem Beitragfragen.Esermöglicht das Hinzufügennureiner Umschreiberegel und das Abrufen der Beitragsseite,unabhängig davon,ob sich der Beitragin einer Kategorie,einer Unterkategoriebefindet odernicht.The request filter is a good way to filter if we're asking a category (term in fact) and a post. It allows adding only one rewrite rule and get post page whether if post is in a category, a subcategory or not at all.
- 0
- 2018-10-30
- ZalemCitizen
-
- 2014-11-10
2 verschiedene Methoden:
* Siehe Hinweise am Ende dieses Beitrags.
Zum Beispielmöchten Sieeine solche Permalink-Struktur haben:
/MAIN_CATEGORY/SUB_CAT_2/Another_SUBCAT/my-postZuerst müssen Siemöglicherweise Permalinks auf /% category%/%postname% setzen. Dann ...
METHODE 1:
STANDARD-Kategorienerstellen (
MAIN_CATEGORY
,SUB_CAT_1
,und usw.
) und den CUSTOM POST registrieren,einschließlich dieses Parameters:'taxonomies'=> Array ('Kategorie' ..)
und verwenden Sie diese Codes,um Permalinks zu ändern: https://wordpress.stackexchange.com/a/195643/33667
Nach der Veröffentlichungeines CUSTOM POST (falls untereiner Kategorie angehängt) lautet die URL:
beispiel.com/MAIN_CATEGORY/SUB_CAT_1/my-post
METHODE 2:
(ps diese Methode wirdnichtempfohlen ,wenn Sieplanen,Hunderte oder Tausende von Posts zu veröffentlichen.
Registrieren Sie den CUSTOM POST (mit dem Namen
MAIN_CATEGORY
),einschließlich derfolgenden Parameter:"unterstützt"=> Array ('Seitenattribute' ...... "hierarchisch"=> wahr,
Veröffentlichen Sie dannbenutzerdefinierte Beiträge wiefolgt:
(dhmehrerebenutzerdefinierte Beiträge mit dem NamenSUB_CAT_2,SUB_CAT_1 ..
veröffentlichen. Wenn Sie danacheinen anderen Beitrag veröffentlichen,wählen SieSUB_CAT_2
als Elternteil.
p.s.
1) Wenn Sieein Neuling sind,lesen Sie Folgendes: BENUTZERDEFINIERTEN POST und Registrieren von CUSTOM POSTbei TAXONOMY
2) Wenn Sie Suchfunktionenfür Unterebenenbenötigen,verwenden Sie benutzerdefinierte Suchabfrage2 Different Methods:
*See notes in the bottom of this post.
for example, you want to have such permalink structure:
/MAIN_CATEGORY/SUB_CAT_2/Another_SUBCAT/my-postAt first, you may need to set permalinks to /%category%/%postname%. Then...
METHOD 1:
create STANDARD categories (
MAIN_CATEGORY
,SUB_CAT_1
,and etc..
) , and register the CUSTOM POST, including this parameter:'taxonomies' => array('category'..)
and use this codes to change permalinks: https://wordpress.stackexchange.com/a/195643/33667
Then, after publishing a CUSTOM POST (if attached under a category), URL will be:example.com/MAIN_CATEGORY/SUB_CAT_1/my-post
METHOD 2:
(p.s. this method is not advised if you plan to publish hundreds or thousands of posts)
register the CUSTOM POST (named
MAIN_CATEGORY
), including these parameters:"supports" => array('page-attributes'...... "hierarchical" => true,
then, publish custom posts like this:
(i.e. publish several custom posts, namedSUB_CAT_2, SUB_CAT_1..
. After then, when you publish another post, but chooseSUB_CAT_2
as parent.
p.s.
1) If you are newbie, review: Register CUSTOM POST and Registering CUSTOM POST with TAXONOMY
2) if you will need search functionality for sub-levels, then use custom search query -
- 2016-04-07
Nachdemichmir stundenlang den Kopfgeschlagen hatte,fandich dieses Plugin sehr hilfreich.
https://wordpress.org/plugins/custom-post-type-Permalinks/
Unten sehen Sie den Screenshot der darinenthaltenen Optionen.
After banging my head for hours, I found this plugin very helpful.
https://wordpress.org/plugins/custom-post-type-permalinks/
Below is the screen shot of options it gives.
Diesistein Reposteinerfrüheren Frage,dieich hatte,aberichmöchtejetzt auf weitere Detailseingehen,um dies vollständig lösen zu können.
Bei (normalen) Postsist das Ändern des Permalinks soeinfach wie das Aufrufen von Einstellungen> Permalink und das Ändern aufeinen beliebigen Wert,z. B. den häufig verwendeten
% category%/%postname% .html
. Das allesfunktioniert. Wenn diesnurfür denbenutzerdefinierten Beitragstyp und seine Taxonomien soeinfach wäre.Dasistes also,wasichgerneerreichenmöchte.
Wasichbisherbekommen habe,istfolgendes:
custom_post_type
mit dem Namen project undeineTaxonomie
project_category erstellt.post_type=project
-Postings aufgelistet sind. Wie kannich dem Permalink von Seiten .html hinzufügen? Esistjetztmit http://mywordpress.com/portfolio verknüpft,währendich http://mywordpress.com/portfolio.html . Dies sollte daserste Problem lösen.Portfolio/(KATEGORIEPFAD VON OBEN NACH KIND)/post.html
. Ich steckeimmernochfest. Ich denke,ich sollteirgendwie die letzte Kategorie zum Pfad hinzufügen und dieseentlang der Projektkategorie weitergeben,was zueinertaxonomy.php-Dateiführen sollte,in derich sie richtig verarbeiten kann.%postname% .html
am Ende vonetwas zutun haben.Ich hoffe,mein Problemist klar undesgibt mutige Entwickler,diemir helfen,dieses Problem anzugehen,dasmichbereits vier volle Tagebeschäftigt hat!