it-swarm.com.de

Wie ändere ich die Permalink-Struktur für einen eigenen Beitragstyp und dessen Taxonomien?

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.

  1. http://mywordpress.com/portfolio.html - Alle Beiträge in allen Kategorien anzeigen.
  2. http://mywordpress.com/portfolio/music/ - Alle Beiträge in dieser Kategorie anzeigen.
  3. http://mywordpress.com/portfolio/music/trance/ - Alle Beiträge in dieser (untergeordneten) Kategorie anzeigen.
  4. http://mywordpress.com/portfolio/music/trance/Tiesto.html - Den Beitrag anzeigen.

Was ich bisher bekommen habe, ist das Folgende:

  1. Zuerst habe ich einen custom_post_type mit dem Namen project und eine taxonomy project_category erstellt.
  2. Ich habe ein Seitenportfolio erstellt und ihm eine Seitenvorlage gegeben, in der alle 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.
  3. Dann wird es schwierig, weil wir nicht genau wissen, wie viele Unterkategorien es gibt, vielleicht gibt es gar keine. Die Struktur, nach der wir suchen, ist 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.
  4. Ich habe das auch nicht angegangen, aber es sollte am Ende etwas mit %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!

9
Mark

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;
}
4
Mark

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.

 enter image description here 

1
Mohd. Umar

2 verschiedene Methoden:

* 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...




METHODE 1:

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



METHODE 2:

(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

0
T.Todua