Передача параметров URL в страницы WordPress и ЧПУ
Я создаю шорткод следующим образом:
function test_func( $atts ) {
// Возвращаем GET-параметр 'myvar'
return $_GET['myvar'];
}
add_shortcode( 'test', 'test_func' );
и страницу с именем myparameters
так что итоговый URL выглядит так:
http://website.com/myparameters
если я попробую так, то все работает идеально:
http://website.com/myparameters/?myvar=theparameter
Но я хочу иметь красивый URL или ЧПУ, например:
http://website.com/myparameters/theparameter/
Но выдается страница "Не найдено".
Я пробовал руководства, например ЭТО, но ничего не помогло.

пример ссылки @milo — это ответы, нам нужно использовать global $wp; чтобы получить значение вот так: $wp->query_vars['myvar'];

Это полный пример, который отлично работает с одним параметром — просто замените id на идентификатор вашей страницы.
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 Что ты думаешь об этом? Это правильный способ получения значения с красивым URL

@kromosome Что ты думаешь об этом? Это правильный способ получения значения с красивым URL

Для создания красивых URL с параметрами в WordPress можно использовать правила перезаписи, предоставляемые WordPress, вместе с пользовательской конечной точкой или правилом перезаписи.
Вам необходимо зарегистрировать пользовательское правило rewrite
для обработки красивого URL. Добавьте следующий код в файл functions.php
вашей темы:
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);
После добавления правила перезаписи необходимо сбросить правила перезаписи, чтобы WordPress распознал новое правило. Это можно сделать, посетив страницу "Настройки" > "Постоянные ссылки"
в админ-панели WordPress.
Обновите вашу функцию шорткода, чтобы получать значение myvar
из переменных запроса вместо $_GET
:
function test_func($atts) {
$myvar = get_query_var('myvar');
return $myvar;
}
add_shortcode('test', 'test_func');
