Pagina de pagini personalizate bazate pe rescrierea adresei URL

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.


Obiectiv:

  1. Adăugați o regulă de rescriere pe un post post customizat permalink
  2. Utilizați un șablon de pagină pe baza regulii de rescriere

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.


1. Înregistrați URL-ul personalizat

 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.


2. Înregistrați interogarea Vars

 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.


3. Setați șablonul

 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?

Notă: În secțiunea de setare a șablonului de pagină, folosim funcții anonime PHP. Deci, acest cod va avea nevoie de suport minim PHP 5.3.0 sau ai putea folosi filtrele vechi. Un lucru de reținut cu ajutorul funcțiilor anonime este faptul că nu puteți să anulați înregistrarea unui filtru sau a unei acțiuni așa cum ați putea face în mod normal. Dar este o modalitate ușoară de a lega o acțiune / filtru fără a da funcției un nume.
Cod