Transmiterea parametrilor URL către paginile WordPress și URL-uri prietenoase

28 feb. 2017, 02:48:32
Vizualizări: 18.1K
Voturi: 1

Am creat un shortcode astfel:

function test_func( $atts ) {   
    return $_GET['myvar'];
}
add_shortcode( 'test', 'test_func' );

și o pagină cu numele myparameters

deci URL-ul final este:

http://website.com/myparameters

dacă încerc asta, funcționează perfect:

http://website.com/myparameters/?myvar=theparameter

Dar aș dori să am un URL prietenos sau elegant de genul:

http://website.com/myparameters/theparameter/

Însă afișează eroare "Pagină negăsită".

Am încercat câteva tutoriale precum acesta LINK dar nu s-a întâmplat nimic.

2
Comentarii

acest răspuns va funcționa pentru tine.

Milo Milo
28 feb. 2017 04:06:59

@Milo bine, am investigat puțin mai mult, dacă folosesc global $wp; $view = $wp->query_vars['myvar']; pentru a obține parametrul și acum funcționează bine cu add_rewrite_rule și returnez $view în funcția de shortcode, voi lăsa exemplul complet când va fi gata.

metalbox metalbox
28 feb. 2017 04:16:09
Toate răspunsurile la întrebare 3
2

Tu formezi o cerere GET, adică ?var=1&var2=2, dar ai trimis-o ca o cerere POST. Trebuie să trimiți cererea ca GET pentru ca variabilele să fie afișate în bara de adrese așa cum te aștepți să fie afișate.

28 feb. 2017 04:15:52
Comentarii

exemplul @milo Link este doar răspunsurile, trebuie să folosim global $wp; pentru a obține valoarea astfel: $wp->query_vars['myvar'];

metalbox metalbox
28 feb. 2017 04:19:42

Am înțeles greșit întrebarea ta, crezând că voiai să știi de ce primeai un format față de altul în bara de adrese. Bine că ai găsit o soluție la problema ta.

Matt G Matt G
28 feb. 2017 04:24:21
3

Acesta este exemplul complet, funcționează foarte bine cu un singur parametru, doar schimbați ID-ul cu cel al paginii dvs.

function bartag_func( $atts ) { 
    global $wp;
    $view = $wp->query_vars['jp_stn'];
    return $view;
}
add_shortcode( 'bartag', 'bartag_func' );


function cdl_rewrite_rule(){
    add_rewrite_rule(
        'pronosticador/([-a-z]+)/?$',
        'index.php?page_id=52&jp_stn=$matches[1]',
        'top'
    );
}
add_action( 'init', 'cdl_rewrite_rule' );

function cdl_query_vars( $query_vars ){
    $query_vars[] = 'jp_stn';
    return $query_vars;
}
add_filter( 'query_vars', 'cdl_query_vars' );
28 feb. 2017 04:24:24
Comentarii

@Milo Ce părere ai despre asta? este modul corect de a obține valoarea cu URL frumos

metalbox metalbox
28 feb. 2017 04:26:45

@kromosome Ce părere ai despre asta? este modul corect de a obține valoarea cu URL frumos

metalbox metalbox
28 feb. 2017 04:26:55

Notă: Reîmprospătează Permalink-urile

metalbox metalbox
28 feb. 2017 04:39:17
0

Pentru a obține URL-uri frumoase cu parametri în WordPress, puteți utiliza regulile de rescriere oferite de WordPress împreună cu un endpoint personalizat sau o regulă de rescriere.

Trebuie să înregistrați o regulă personalizată de rewrite pentru a gestiona URL-ul frumos. Adăugați următorul cod în fișierul functions.php al temei dumneavoastră

function custom_rewrite_rule() {
    add_rewrite_rule('^myparameters/([^/]+)/?', 'index.php?pagename=myparameters&myvar=$matches[1]', 'top');
}
add_action('init', 'custom_rewrite_rule', 10);

function custom_query_vars($query_vars) {
    $query_vars[] = 'myvar';
    return $query_vars;
}
add_filter('query_vars', 'custom_query_vars', 10, 1);

După ce ați adăugat regula de rescriere, trebuie să resetați regulile de rescriere pentru ca WordPress să recunoască noua regulă. Puteți face acest lucru accesând pagina "Setări" > "Legături permanente" din zona de administrare WordPress

Actualizați funcția shortcode pentru a prelua valoarea lui myvar din variabilele de interogare în loc de $_GET

function test_func($atts) {
    $myvar = get_query_var('myvar');
    return $myvar;
}
add_shortcode('test', 'test_func');
28 feb. 2024 15:18:05