Transmiterea parametrilor URL către paginile WordPress și URL-uri prietenoase
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.

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

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' );

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

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

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');
