Disabilita il percorso di riconoscimento di WordPress come allegato
1 risposta
- voti
Dopo averimparato unpo 'dipiù sulla strutturapredefinita dipermae su comemodificarla,sonoincappatonell'hook rewrite_rules_array
. Questo hookti consente difiltrare l'array di regole di riscrittura,un array di regole di riscrittura URLin WordPress che aiutano a determinare qualetipo di contenuto caricare.
Questo è un ottimopostoper disabilitareil comportamentopredefinitoper riconoscereilpercorso come allegato. È così che ci si sbarazza ditutte le regole di riscritturapergli allegati,quindi dituttoil comportamentoper riconoscere unpercorso come allegato.
add_filter('rewrite_rules_array', function($rules) {
foreach ($rules as $rule => $url) {
if (strpos($url, 'attachment') !== false) {
unset($rules[$rule]);
}
}
return $rules;
});
Non sono sicuro ditutte le altre regolee desidero assolutamente verificarletutte. Questi adesempio:
"(.?.+?)(?:/([0-9]+))?/?$" => "index.php?pagename=$matches[1]&page=$matches[2]"
"([^/]+)(?:/([0-9]+))?/?$" => "index.php?name=$matches[1]&page=$matches[2]"
Ti aiuterà a riconoscere lepagine,molto utileper sapere se vuoi usare solo lepagine. Ma ricorda se riscrivi l'array solo con queste chiavi/valori,verranno riscritte (rimosse) anchenuove regole,adesempio regoleperiltuotipo di articolopersonalizzato.
NOTA: il debug di questofiltro èpossibile solonellapagina Impostazioni> Permalinknelback-end di WordPress.
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.
Ogni volta cheinserisci un URL con due segmenti dipercorso chenonesistono,WordPress analizzerà automaticamente la query come allegato.
Come riprodurre
/%postname%/
./foo/bar
assicurati che "foo"non sia unatassonomia o untipo di articoloesistente.pre_get_posts
e scaricaglobal $wp_query
.post_type = 'attachment'
alla querye alcune altreinformazioni relative all'allegato.NOTA: non sono sicuro delle affermazioni chefaccionei passaggi 2e 5.
Perchépreoccuparsi?
Hotrovatomoltofastidiosogestire questo comportamentopredefinitoe vorrei davvero disabilitarloin qualchemodo,se sai comefareperfavorefammelo sapere. Rendeimpossibile ottenere determinate strutture dipermalink. Doveprobabilmente vuoi sapere anchetu. Sto cercando di ottenere una strutturapermalinkin cui lo slug delpost corrente èprefisso daltermine slug. Adesempio,iltipo dipost "example" hapost "bar" che ha una relazione con untermine con lo slug "foo". Invece di definireilpermalink "example/bar",dovrebbeessere definito come "foo/bar".