V-ați întrebat vreodată despre rescrierea URL-urilor personalizate WordPress? Aici am avut de-a face cu o problemă interesantă. Am vrut să adaug o regulă de rescriere pe un permalink și am vrut să folosesc un șablon personalizat pentru acea regulă de rescriere. Cu toate acestea, acest lucru nu este un post exhaustiv despre cum să faceți rescrierea regulilor, există un tutorial foarte bun detaliat despre acest lucru dacă vreți să aflați mai multe detalii.
Aici avem a film
post tip. Structura permalink este film / film name
. Vreau să adaug o fotografii
și Videoclipuri
punct final la url, astfel încât structura va fi film / film name / pozele
și film / film name / video
. După cum puteți ghici, vreau să afișăm toate fotografiile și videoclipurile pe o pagină separată de acel film și doriți să utilizați șablon de pagină separat pentru a realiza acest lucru.
functie prefix_movie_rewrite_rule () add_rewrite_rule ('film / ([^ /] +) / fotografii', 'index.php? film = $ meciuri [1] & photos = da', 'top'); add_rewrite_rule ('film / ([^ /] +) / videoclipuri', 'index.php? film = $ meciuri [1] & videoclipuri = da', 'sus'); add_action ('init', 'prefix_movie_rewrite_rule');
De aceasta add_rewrite_rule
, adăugăm două reguli de rescriere personalizate la adresa URL și setarea a două variabile de interogare la adresa URL. Nu folosesc add_rewrite_endpoint
pentru că nu vreau să adaug acest punct final tuturor permalink-urilor pe care le am. Dar, adăugând doar această regulă de rescriere, acestea nu vor funcționa și WordPress le va respinge deoarece nu recunoaște vars-urile de interogare pe care le-am adăugat prin intermediul funcției noastre de rescriere. Trebuie să spunem WordPress că este modest pe aceste variante de interogare.
funcția prefix_register_query_var ($ vars) $ vars [] = 'fotografii'; $ vars [] = 'videoclipuri'; returnează $ vars; add_filter ('query_vars', 'prefix_register_query_var');
Acum, după ce am adăugat acele interogări la WordPress, le vom recunoaște și le putem profita de ele. Dar dacă te duci la adresa URL film / film name / pozele
, totuși vei vedea asta single-movie.php sau single.php șabloanele se ocupă de aceste adrese URL. Dacă vedeți o eroare de 404 pentru adresa URL personalizată, nu vă faceți griji, salvați-vă din nou permalinks.
function () return (get_query_var ()) && is_singular ('film')) add_filter ('template_include' ; dacă (get_query_var ('videoclipuri') && is_singular ('film')) add_filter ('template_include', funcția () return get_template_directory (); /single-movie-video.php ';); add_action ('template_redirect', 'prefix_url_rewrite_templates');
Aici spunem că, dacă există o interogare var fotografii
sau Videoclipuri
și este un singur film
pagina, setăm șablonul ca un singur film-image.php și un singur film-video.php respectiv.
Asa de, un singur film-image.php
este responsabil pentru film / film name / pozele
interogare și un singur film-video.php
este responsabil pentru film / film name / video
interogare. Simplu eh?