Gibt es eine Möglichkeit, die .html
Erweiterung benutzerdefinierten Beitragstypen ohne Plugin hinzuzufügen ?
Für Beiträge kann ich /%postname.html
die Permalink-Einstellungen verwenden
Für Seiten kann ich verwenden:
add_action('init', 'change_page_permalink', -1);
function change_page_permalink() {
global $wp_rewrite;
if ( strstr($wp_rewrite->get_page_permastruct(), '.html') != '.html' )
$wp_rewrite->page_structure = $wp_rewrite->page_structure . '.html';
}
Für benutzerdefinierte Beitragstypen ???
Gibt es einen ähnlichen Code wie oben, der es mir ermöglicht, die .html
URL des benutzerdefinierten Beitragstyps zu ändern oder hinzuzufügen ?
custom-post-types
permalinks
url-rewriting
urls
user983248
quelle
quelle
function post-type_permalink
wird einen Fehler werfen. Wenn Sie diesen Fehler nicht erhalten, ist bei Ihren Debug-Einstellungen ein schmerzlicher Fehler aufgetreten. Bitte überarbeiten Sie auch Ihre Frage mit den richtigen Absichten in den Zeilen. Vielen Dank./$postname.html
für die Beiträge festgelegt habe, wie kann ich dasselbe für die benutzerdefinierten Beitragstypen verwenden.-
nicht in Funktionsnamen ...Antworten:
Das scheint zu funktionieren:
Erstellen Sie die Umschreiberegeln wie
post-type/post-name.html
. Sie können Arrays verwenden, um die Regeln für nur einige Post-Typen zu erstellen, anstatt dies für alle zu tun.Formatieren Sie die neue Permalink-Struktur für diese Beitragstypen.
Beenden Sie dann die Umleitung der kanonischen URLs, um den abschließenden Schrägstrich zu entfernen. Dies erfordert möglicherweise etwas mehr Arbeit, da Sie die Umleitung wahrscheinlich in den meisten Fällen beibehalten möchten.
Wie andere hier bereits sagten, müssen Sie nach dem oben beschriebenen Vorgehen die Regeln
options-permalink.php
löschenDashboard -> Settings -> Permalinks
. Dies ist möglich, indem Sie die Administrationsseite in besuchen .quelle
wpse_59024_
(Frage-ID) voranzustellen , um Konflikte zwischen Kopie / Pasta zu vermeiden;). . . Und hat den zusätzlichen Vorteil zu wissen, zu welcher Antwort dieser Code in unserer Snippets-Bibliothek gehört. . . . . +1 genau richtig!post_type_link
Filter verwendenSie können hierfür eine Umschreiberegel hinzufügen, die die integrierten Permalinks ersetzt, z. B. für einen benutzerdefinierten Beitragstyp "Produkt" ...
(Vergessen Sie nicht, Ihre Regeln zu
flush_rules
leeren, indem Sie Ihre Permalinks erneut speichern oder wie oben beschrieben @toscho verwenden).Vorsichtsmaßnahmen
the_permalink()
dies verwenden würden, daher müssen Sie möglicherweise einen Filter hinzufügenpost_link
, um diese Links abzufangen. Sie können demredirect_canonical
Filter auch hinzufügen, um die Standardpermalinks umzuleiten, sodass / product / foo und / product / foo / zu /product/foo.html umleiten.quelle
Wenn Sie ein WordPress-Plugin bevorzugen, um die Arbeit für Sie zu erledigen, lesen Sie Benutzerdefinierte Permalinks vom Typ Post im WordPress-Plugin-Repository. Getestet auf WordPress 3.4.1 und es funktioniert perfekt.
Navigieren Sie nach dem Aktivieren des Plugins einfach zu Dashboard -> Einstellungen -> Permalinks. Sie können für jeden registrierten benutzerdefinierten Beitragstyp bestimmte Umschreibungen hinzufügen.
quelle
flush_rules()
sollte nur bei De / Aktivierung aufgerufen werden, weil es sehr langsam ist. Sie können überprüfen$GLOBALS['wp_rewrite']->rules
, ob die Regeln bereits bekannt sind.