Maparea mai multor URL-uri către aceeași pagină
Tocmai am dat peste această pagină cu cerințe aproape similare cu ale mele
Multiple puncte finale către aceeași pagină
Trebuie să realizez aceeași funcționalitate dar vreau să transmit și niște parametri către pagina unde vor fi mapate toate aceste URL-uri. De exemplu:
http://mysite.com/test/link1
http://mysite.com/test/link2
http://mysite.com/test/link3
Vreau să le mapez către același URL
http://mysite.com/test/finalDestination
Pe lângă asta, vreau să trimit și alți parametri precum:
- email utilizator
- nume utilizator
astfel încât să îi pot folosi în acea pagină pentru logica mea personalizată. Știu cum să fac asta în JSP/Java unde pot să îi trimit ca parametri de request în cererea POST și să îi recuperez în JSP-ul final
Cum pot realiza acest lucru în WordPress folosind PHP. Preferințele mele sunt să nu folosesc query string-uri.
Sau este posibil ca dacă creez URL-uri precum
http://mysite.com/test/user1
http://mysite.com/test/user2
http://mysite.com/test/user3
unde user1 etc pot fi preluați din baza de date și putem asigura că vor fi unici în aplicație și maparea acestor URL-uri către același punct final. Cum pot prelua numele de utilizator în pagina mea finală?
Mulțumesc anticipat

Puteți folosi același răspuns ca la întrebarea la care v-ați referit (am răspuns deja). Iată cum ați putea modifica pentru a transmite argumentele:
<?php
add_action('init', 'add_my_rule');
function add_my_rule()
{
global $wp;
$wp->add_query_var('args');
add_rewrite_rule('test\/finaldestination\/(.*)','index.php?pagename=about&args=$matches[1]','top');
}
?>
Presupunând că 'finaldestination' rămâne mereu același, iar numele paginii (slug-ul) este 'about' (puteți schimba ambele). Aplicați șablonul personalizat la această pagină, iar în șablon, faceți acest lucru:
//dacă accesați http://.../test/finaldestination/name/romeo, atunci $params va fi name/romeo. Puteți despărți acest lucru și obține valoarea.
$params = get_query_var('args');
După ce ați introdus acest cod în fișierul dvs., mergeți la Setări>Legături permanente
și apăsați butonul de salvare.
Nu am testat acest lucru, dar am folosit ceva similar într-un proiect recent și sunt sigur că va funcționa.

Mulțumesc pentru sugestie. Practic am o pagină cu URL-uri http://localhost/blog/wordpress/author/admin/ unde vor fi afișate postările autorului asociat. Am o pagină author.php unde folosesc o interogare personalizată bazată pe niște parametri. Tot ce vreau este ca dacă am un autor cu numele "my-author", URL-ul să fie http://localhost/blog/wordpress/author/my-author/ care să corespundă cu "http://localhost/blog/wordpress/author/admin/" și să pot folosi "my-author" pentru a interoga baza de date și a prelua postările sale. Nu sunt sigur cât de fezabil este acest lucru.

Am încercat codul tău astfel: $wp->add_query_var('args'); add_rewrite_rule('author/(.*)','index.php?pagename=author&args=$matches[1]','top'); și când am încercat să accesez URL-ul http://localhost/blog/wordpress/author/my-work/ mi-a dat eroarea 404

De ce încerci să creezi un astfel de URL? WordPress are deja URL-ul arhivei autorului în această formă. Deci http://localhost/blog/author/my-author
va pointa întotdeauna către pagina de arhivă pentru my-author
. De asemenea, un motiv posibil ar putea fi că author
este un termen rezervat în universul WP. Ar trebui să încerci cu alt termen în loc de author. Și, este slug-ul paginii tale author
?

nu sunt sigur ce înțelegi prin slug-ul paginii ca 'author', fiind nou pe platformă mă face confuz. Ideea este că acești autori vor fi autori invitați fără profil stocat sau nu vom crea un cont de utilizator pentru ei, tot ce putem face este să stocăm un câmp cu numele autorului în secțiunea personalizată a postării și să-l folosim pentru a prelua postările lui/ei

Ohh... dacă ești nou pe platformă, atunci nu ar trebui să te joci cu URL-urile. Ceea ce încerci să faci va necesita mult mai mult decât o simplă regulă de rescriere a URL-ului! O modalitate ar fi să adaugi cheia câmpurilor meta (să spunem numele autorului) la URL și apoi să obții postările care au această cheie meta.

Asta încerc să realizez. Tema mea are deja fișierul author.php, așa că ceea ce încerc să obțin este ca atunci când cineva accesează URL-ul de tip localhost/blog/wordpress/author/aum-kumar să redirecționez fiecare URL cu modelul localhost/blog/wordpress/author/ către pagina author.php unde pot folosi ultimul parametru ca valoare pentru căutare, deci în cazul meu "aum-kumar" va fi valoarea câmpului meta, dar până acum nu am reușit să obțin asta

Nu este nevoie să scrii o nouă regulă, deoarece ceea ce dorești deja există. Ceea ce poți face este să creezi un cont pentru autorul invitat cu rolul de Contributor
, astfel încât acesta să poată scrie un articol, dar să nu-l publice. În acest fel, pagina sa de arhivă va fi accesibilă exact așa cum dorești, fără a rescrie orice URL-uri. Citește mai multe despre rolurile WordPress: http://codex.wordpress.org/Roles_and_Capabilities

de acord, dar există câțiva autori care doar doresc să trimită articolul lor și atât. Am venit cu aceeași sugestie, dar a fost respinsă, așa că sunt nevoit să caut o astfel de alternativă.

hai să continuăm această discuție în chat

@Moderator Sistemul nu mă lasă să discut, se pare că nu am 20 de reputație în rețea!

Am încercat deja să intru pe chat! Dar din nu știu ce motiv nu mă lasă!

este foarte trist, poți să-mi arăți cum pot realiza asta? deoarece sunt blocat aici cumva

Explicația completă este destul de lungă, dar voi da câteva sfaturi. În primul rând, nu folosi termenul author
, folosește altceva în timp ce scrii regula. Folosește parametrul args
pentru a trimite un nume de autor către fișierul tău de template și pentru a obține și afișa postările folosind acest nume.

am încercat cu writer chiar ceva de genul add_action('init', 'add_my_rule');
function add_my_rule() {
global $wp;
$wp->add_query_var('args');
add_rewrite_rule('writer\/(.*)','index.php?pagename=author&args=$matches[1]','top'); } dar încă nu funcționează. Ca o observație suplimentară, am pagina author.php ca pagină personalizată în directorul temei mele, dar tot primesc eroare 404

Va trebui să modifici și slug-ul paginii! Editează pagina căreia i-ai aplicat șablonul și schimbă slug-ul în writer
. Apoi, în această regulă, schimbă pagename=author
în pagename=writer
. După aceea, mergi la Setări>Legături permanente
și doar dă click pe salvare.

am înțeles ce ai spus. Nu creasem o pagină în panoul de administrare, dar după ce am creat o pagină și i-am atribuit șablonul meu personalizat, aceasta apare și în bara de meniu. Pot să cer WordPress să nu o afișeze în meniu/submeniu? Nu am opțiunea de a-ți vota postarea, dar mi-ai făcut ziua mai bună :) mulțumesc pentru ajutor până acum

Asigurați-vă că adăugați o URL canonică în antetul paginilor duplicate, referindu-se la instanța principală a paginii... altfel veți ajunge cu conținut duplicat - ceea ce este rău pentru SEO (contează doar dacă aceste pagini sunt publice și indexate).
De asemenea, aș opta pentru author.php al temei sau permalink %author% în cazul în care sunt utilizatori obișnuiți WordPress. Puteți accesa datele despre autor astfel:
$author = get_user_by('slug', $author_name);
$author_id = (int)$author->ID;
$name = $author->first_name.' '.$author->last_name;

Dacă am înțeles corect ceea ce ai spus, soluțiile posibile sunt aici:
Pentru prima parte, poți folosi plugin-ul WordPress Redirection pentru a-ți satisface nevoile cu ușurință.
Pentru a doua parte, poți folosi %author% pentru structurile de legături permanente. Verifică în codex.
