Deaktivieren Sie den WordPress-Erkennungspfad als Anhang
1 Antworten
- Stimmen
Nachdemichetwasmehr über die Standard-Permastruktur und deren Modifikationerfahren hatte,stießich auf den Hook rewrite_rules_array
. Mit diesem Hook können Sie das Array von Umschreiberegelnfiltern,ein Array von URL-Umschreiberegelnin WordPress,mit dessen Hilfe Siebestimmen können,welche Art von Inhaltgeladen werden soll.
Diesistein großartiger Ort,um das Standardverhalten zum Erkennen des Pfads als Anhang zu deaktivieren. Auf diese Weise werden alle Umschreiberegelnfür Anhänge und damit dasgesamte Verhalten zum Erkenneneines Pfads als Anhangentfernt.
add_filter('rewrite_rules_array', function($rules) {
foreach ($rules as $rule => $url) {
if (strpos($url, 'attachment') !== false) {
unset($rules[$rule]);
}
}
return $rules;
});
Ichbin mirbei allen anderen Regelnnicht sicher undmöchte sie aufjeden Fall alle überprüfen. Diese zum Beispiel:
"(.?.+?)(?:/([0-9]+))?/?$" => "index.php?pagename=$matches[1]&page=$matches[2]"
"([^/]+)(?:/([0-9]+))?/?$" => "index.php?name=$matches[1]&page=$matches[2]"
Hilft Ihnenbeim Erkennen von Seiten. Diesist sehrnützlich,wenn Sienur Seiten verwendenmöchten. Denken Siejedoch daran,dassneue Regeln,z. B. Regelnfür Ihrenbenutzerdefinierten Beitragstyp,ebenfallsneugeschrieben (entfernt) werden,wenn Sie das Arraynurmit diesen Schlüsseln/Wertenneu schreiben.
HINWEIS: Das Debuggen dieses Filtersistnur auf der Seite Einstellungen> Permalinksim WordPress-Backendmöglich.
After getting to know a bit more about the default perma structure and how to modify it I stumbled upon the hook rewrite_rules_array
. This hook allows you to filter the array of rewrite rules, an array of URL rewrite rules in WordPress what will help determine what type of content to load.
This is a great place to disable the default behavior for recognizing the path as attachment. This is how you get rid of all rewrite rules for attachments, thus all the behavior for recognizing a path as attachment.
add_filter('rewrite_rules_array', function($rules) {
foreach ($rules as $rule => $url) {
if (strpos($url, 'attachment') !== false) {
unset($rules[$rule]);
}
}
return $rules;
});
I'm not sure about all other rules and I definitely want to check them all out. These for example:
"(.?.+?)(?:/([0-9]+))?/?$" => "index.php?pagename=$matches[1]&page=$matches[2]"
"([^/]+)(?:/([0-9]+))?/?$" => "index.php?name=$matches[1]&page=$matches[2]"
Will help you recognize pages, very useful to know if you only want to use pages. But remember if you rewrite the array with only these keys/values then new rules for example rules for your custom post type will also be rewritten (removed).
NOTE: Debugging this filter is only possible on the Settings > Permalinks page in the WordPress back-end.
Immer wenn Sieeine URLmit zweinicht vorhandenen Pfadsegmenteneingeben,analysiert WordPress die Abfrage automatisch als Anhang.
Reproduzieren
/%postname%/
./foo/bar
Stellen Sie sicher,dass "foo" keine Taxonomie oder kein Post-Typist.pre_get_posts
ein und sichern Sie dieglobal $wp_query
.post_type = 'attachment'
undeinige andere anhangsbezogene Informationen hinzufügt.HINWEIS: Ichbin mirnicht sicher,welche Aussagenichin Schritt 2 und 5mache.
Warum sich darum kümmern?
Ichfandes sehr ärgerlich,mit diesem Standardverhalten umzugehen,undmöchtees wirklichirgendwie deaktivieren,wenn Sie wissen,wie,lassen Sieesmichbitte wissen. Esmachtes unmöglich,bestimmte Permalink-Strukturen zuerreichen. Wo Sie wahrscheinlich auch wissen wollen. Ich versuche,eine Permalink-Struktur zuerreichen,bei der der aktuelle Post-Slug dem Begriff Slug vorangestellt wird. Zum Beispiel hat der Beitragstyp 'Beispiel'einen Beitrag 'Balken',dereine Beziehung zueinem Begriffmit dem Slug 'foo' hat. Anstatt den Permalink 'example/bar' zu definieren,sollteer als 'foo/bar' definiert werden.