Eliminarea redirecționării după modificarea slug-ului unei pagini
Pe una dintre paginile mele am schimbat slug-ul pentru a forma un URL diferit. De exemplu:
Vechi: http://example.com/old-slug
Nou: http://example.com/new-slug
WordPress și-a făcut treaba sa de a redirecționa http://example.com/old-slug către http://example.com/new-slug.
Aș dori să elimin acest comportament deoarece un plugin pe care îl folosesc utilizează slug-ul în cauză, iar redirecționarea îi suprascrie funcționalitatea.
Am verificat această întrebare și am căutat în tabela wp_postmeta
instanțe ale _wp_old_slug
dar nu s-a returnat nimic. Serverul meu este Nginx așa că nu ar trebui să fie afectat de fișierele .htaccess.
Mai există altceva ce pot face pentru a elimina această redirecționare?

Aceasta (în fișierul tău functions.php
) va dezactiva funcționalitatea (dar vezi și comentariul pe care l-am lăsat):
remove_action('template_redirect', 'wp_old_slug_redirect');
Pare ciudat ca tabela ta wp_postmeta
să nu aibă nicio cheie _wp_old_slug
- bucata de cod care face asta se află în wp-includes/query.php
(wp_old_slug_redirect()) - ai putea adăuga o instrucțiune exit sau de depanare acolo pentru a verifica dacă este apelată.
De asemenea, reține că dacă WordPress nu poate găsi un permalink, caută postări cu o porțiune care se potrivește, de exemplu dacă ai o postare cu permalinkul /foobar, atunci /foo va redirecționa către ea.

Ai putea adăuga comentariul tău în răspuns doar pentru a-l completa și a avea tot conținutul într-un singur loc?

Într-adevăr, comentariul tău a fost soluția. Am o pagină numită Evenimente
care avea slug-ul events-page
. Nicio pagină nu avea slug-ul events
, dar când vizitam example.com/events
redirecționa către pagina Evenimente
. WP evident că potrivea slug-ul cu o pagină care avea același titlu, deoarece nu exista altceva pentru acesta.

acest lucru a funcționat pentru mine:
remove_filter('template_redirect', 'redirect_canonical');
sursă: http://biostall.com/prevent-wordpress-redirecting-to-nearest-matching-url/

Pentru a elimina manual redirecționările automate după schimbarea slug-ului, pur și simplu ștergeți rândurile corespunzătoare din tabelul "wp-redirection-items" din baza de date folosind phpMyAdmin.
Aceasta este cea mai bună și simplă metodă care vă permite să eliminați redirecționările pentru anumite articole.

Fiecare articol WordPress are propriul său slug, care este generat automat pe baza titlului articolului. Dacă decideți să modificați slug-ul ulterior, WordPress va ține minte versiunea veche și o va redirecționa către cea nouă. Este posibil să preveniți redirecționarea slug-urilor vechi în WordPress prin eliminarea a câteva acțiuni din nucleul WordPress folosind un mic fragment de cod.
Adăugați următorul cod în fișierul functions.php al temei curente pentru a preveni WordPress să redirecționeze slug-urile vechi către cele noi:
remove_action( 'template_redirect', 'wp_old_slug_redirect');
remove_action( 'post_updated', 'wp_check_for_changed_slugs', 12, 3 );
