Passaggio di parametri URL alle pagine WordPress e URL leggibili

28 feb 2017, 02:48:32
Visualizzazioni: 18.1K
Voti: 1

Ho creato uno shortcode come questo:

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

e una pagina con il nome myparameters

quindi questa è l'URL finale:

http://website.com/myparameters

se provo questo funziona perfettamente:

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

Ma vorrei avere un URL leggibile o amichevole come questo:

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

Però mostra pagina non trovata.

Ho provato alcuni tutorial come questo LINK ma non succede nulla

2
Commenti

questa risposta funzionerà per te.

Milo Milo
28 feb 2017 04:06:59

@Milo bene, ho investigato un po' di più, se uso global $wp; $view = $wp->query_vars['myvar']; per ottenere il parametro e ora funziona bene con add_rewrite_rule e restituisce $view nella funzione dello shortcode, lascerò l'esempio completo quando pronto.

metalbox metalbox
28 feb 2017 04:16:09
Tutte le risposte alla domanda 3
2

Stai creando una richiesta GET, ad esempio ?var=1&var2=2 ma l'hai inviata come una richiesta POST, devi inviare la richiesta come GET in modo che le variabili vengano visualizzate nella barra degli indirizzi come ti aspetti che vengano visualizzate.

28 feb 2017 04:15:52
Commenti

l'esempio del link @milo è solo le risposte, dobbiamo usare global $wp; per ottenere il valore così $wp->query_vars['myvar'];

metalbox metalbox
28 feb 2017 04:19:42

Ho frainteso la tua domanda pensando che volessi sapere perché ottenevi un formato rispetto a un altro nella barra degli indirizzi. Bene che tu abbia trovato una soluzione al tuo problema.

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

Questo è l'esempio completo, funziona molto bene con un parametro, basta cambiare l'id con quello della tua pagina.

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
Commenti

@Milo Cosa ne pensi di questo? Il modo corretto per ottenere il valore con URL puliti

metalbox metalbox
28 feb 2017 04:26:45

@kromosome Cosa ne pensi di questo? Il modo corretto per ottenere il valore con URL puliti

metalbox metalbox
28 feb 2017 04:26:55

Nota: Svuota i Permalink

metalbox metalbox
28 feb 2017 04:39:17
0

Per ottenere URL eleganti con parametri in WordPress, puoi utilizzare le regole di riscrittura fornite da WordPress insieme a un endpoint personalizzato o a una regola di riscrittura.

Devi registrare una regola di rewrite personalizzata per gestire l'URL elegante. Aggiungi il seguente codice al file functions.php del tuo tema:

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

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

Dopo aver aggiunto la regola di riscrittura, devi svuotare le regole di riscrittura affinché WordPress riconosca la nuova regola. Puoi farlo visitando la pagina "Impostazioni" > "Permalink" nell'area di amministrazione di WordPress.

Aggiorna la tua funzione shortcode per recuperare il valore di miavar dalle variabili di query invece che da $_GET:

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