Cum să creez o pagină dinamică în WordPress?

20 iul. 2012, 11:11:53
Vizualizări: 15.4K
Voturi: 4

Vreau să creez ceva similar cu paginile de membri din BuddyPress. De exemplu: http://www.example.com/membri/foo

http://www.example.com/membri/bar

etc.

Am încercat să analizez codul BuddyPress și am observat că nu folosesc un tip de postare personalizat sau o taxonomie personalizată. De asemenea, nu pare să folosească add_rewrite_rule().

Doresc să implementez ceva similar, unde plugin-ul meu va prelua 'foo' din URL și va genera conținut pe baza acestuia. Care este cea mai bună metodă?

ACTUALIZARE:

Am urmat instrucțiunile din acest thread, care este exact ceea ce doream: Cum să creezi un profil de utilizator cu permalink prietenos

Iată codul:

    add_filter( 'query_vars', 'analytics_rewrite_add_var' );
function analytics_rewrite_add_var( $vars )
{
    $vars[] = 'analytic';
    return $vars;
}

function add_analytic_rewrite_rule(){
    add_rewrite_tag( '%analytic%', '([^&]+)' );
    add_rewrite_rule(
        '^analytics/([^/]*)/?',
        'index.php?analytic=$matches[1]',
        'top'
    );
}
add_action('init', 'add_analytic_rewrite_rule');

add_action( 'template_redirect', 'analytics_rewrite_catch' );
function analytics_rewrite_catch()
{
    global $wp_query;

    if ( array_key_exists( 'analytic', $wp_query->query_vars ) ) {
        include ( get_stylesheet_directory() . '/html/analytics.php');
        exit;
    }
}

Totuși, /analytics/foo/ încă îmi returnează eroarea 404. Unde greșesc?

6
Comentarii

poți clarifica... ce conținut dorești pe pagină? dacă vrei o pagină pentru fiecare Autor (ca membrii în BuddyPress) atunci acest lucru este posibil

Damien Damien
20 iul. 2012 11:27:24

Conținutul poate fi orice. Pentru discuție, să spunem că vreau doar să afișez ultima parte din URL, adică "foo" sau "bar".

Deepak Mittal Deepak Mittal
20 iul. 2012 11:38:00

ar putea fi o variabilă get rescrisă? gen ?members=foo în members/foo? Astfel putem avea o singură pagină care se schimbă în funcție de variabila get.

Sisir Sisir
20 iul. 2012 13:10:58

@DeepakMittal te rog să clarifici taxonomia pe care o dorești, de exemplu /category/foo sau /tag/foo. WordPress trebuie să știe ce este foo. Dacă foo este TITLUL unui articol, atunci /foo este doar un titlu de articol sau pagină

Damien Damien
20 iul. 2012 18:51:05

@Damien Este doar un șir aleatoriu. Poate fi orice. Și nu există nicio taxonomie.

Deepak Mittal Deepak Mittal
20 iul. 2012 18:55:34

Reține că trebuie să resalvezi legăturile permanente ori de câte ori faci o astfel de modificare. Vizitează pagina Setări->Legături permanente și salvează. Acest lucru salvează noua regulă în baza de date.

Otto Otto
22 iul. 2012 00:03:05
Arată celelalte 1 comentarii
Toate răspunsurile la întrebare 2
1

Aici este răspunsul. Și pentru referințe viitoare, Deepak, trebuie să postezi soluția ca un răspuns. În schimb, ai postat răspunsul în cadrul propriii întrebări și apoi ai adăugat un comentariu despre asta. Te rog să nu faci asta.

function analytics_rewrite_add_var( $vars ) {
    $vars[] = 'analytic';
    return $vars;
}
add_filter( 'query_vars', 'analytics_rewrite_add_var' );

function add_analytic_rewrite_rule() {
    add_rewrite_tag( '%analytic%', '([^&]+)' );
    add_rewrite_rule(
        '^analytics/([^/]*)/?',
        'index.php?analytic=$matches[1]',
        'top'
    );
}
add_action('init', 'add_analytic_rewrite_rule');

function analytics_rewrite_catch() {
    global $wp_query;

    if ( array_key_exists( 'analytic', $wp_query->query_vars ) ) {
        include ( get_stylesheet_directory() . '/html/analytics.php');
        exit;
    }
}
add_action( 'template_redirect', 'analytics_rewrite_catch' );
21 iul. 2012 01:59:07
Comentarii

@Deepak - Ceea ce ar trebui să faci, dacă găsești soluția la întrebarea ta, este pur și simplu să lași întrebarea așa cum este și să postezi soluția ca răspuns la propria ta întrebare.

Androliyah Androliyah
21 iul. 2012 22:31:13
2
-2

Mulțumesc, prietene. Poate nu am fost suficient de clar cu întrebarea mea. Aveam exact aceeași problemă: Cum să creezi un profil de utilizator pe frontend cu un permalink prietenos

Am rezolvat-o cu codul pe care l-am adăugat în întrebarea mea de mai sus. Uitasem să resetez regulile, lucru pe care MadLem de pe IRC mi l-a sugerat să fac și acum funcționează.

Îmi cer scuze pentru lipsa de claritate și mulțumesc că ți-ai luat timp să răspunzi :)

20 iul. 2012 18:57:05
Comentarii

Deepak, cred că codul pe care l-ai postat în actualizare ar trebui să fie în interiorul acestui Răspuns în loc de...

brasofilo brasofilo
20 iul. 2012 19:30:55

Am crezut că copierea aceluiași cod nu ar fi o idee bună.

Deepak Mittal Deepak Mittal
21 iul. 2012 11:21:14