Вопрос или проблема
Я создаю короткий код вот так
function test_func( $atts ) {
return $_GET['myvar'];
}
add_shortcode( 'test', 'test_func' );
и одна страница с именем myparameters
так что это конечный URL
http://website.com/myparameters
если я попытаюсь, это работает прекрасно
http://website.com/myparameters/?myvar=theparameter
Но мне хотелось бы иметь красивый URL или удобный URL вот так
http://website.com/myparameters/theparameter/
Но показывает, что страница не найдена.
Я пробовал несколько руководств, например ССЫЛКА, но ничего не произошло
Вы формируете GET запрос, т.е. ?var=1&var2=2, но отправили его как POST запрос, вам нужно отправить запрос как GET запрос, чтобы переменные отображались в адресной строке так, как вы ожидаете.
Это полный пример, он работает очень хорошо с одним параметром, просто измените id на 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' );
Для достижения красивых URL с параметрами в WP, вы можете использовать правила перезаписи, предоставляемые 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);
После добавления правила перезаписи, вам нужно сбросить правила перезаписи, чтобы WP распознал новое правило. Вы можете сделать это, посетив страницу "Настройки" > "Постоянные ссылки"
в вашем административном разделе WP
Обновите вашу функцию короткого кода, чтобы получать значение myvar
из переменных запроса вместо $_GET
function test_func($atts) {
$myvar = get_query_var('myvar');
return $myvar;
}
add_shortcode('test', 'test_func');
Ответ или решение
Передача параметров URL на страницы WordPress и создание "дружественных" URL
Создание "дружественных" URL-адресов в WordPress с передачей параметров — задача, требующая понимания механизма перезаписи URL. В этой статье мы рассмотрим, как передавать параметры через URL, используя шорткод, а также как настроить WordPress для обработки таких URL.
Шаг 1. Создание шорткода
Начнем с создания шорткода, который будет отображать значение параметра, переданного через URL. Вот пример кода, который можно добавить в файл functions.php
вашей темы:
function test_func($atts) {
$myvar = get_query_var('myvar');
return $myvar;
}
add_shortcode('test', 'test_func');
Здесь функция get_query_var
извлекает параметр myvar
, который мы позже добавим в URL.
Шаг 2. Настройка правил перезаписи
Чтобы создать "дружественный" URL-адрес, необходимо зарегистрировать пользовательское правило перезаписи. Это правило сообщит WordPress, как обрабатывать 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');
function custom_query_vars($query_vars) {
$query_vars[] = 'myvar';
return $query_vars;
}
add_filter('query_vars', 'custom_query_vars');
В этом коде:
add_rewrite_rule
создает новое правило. Оно говорит, что когда идентификаторmyparameters
следует за основным URL, WordPress должен обрабатывать это как страницу с именемmyparameters
и передавать совпадающую часть URL в качестве значения переменнойmyvar
.custom_query_vars
добавляетmyvar
в массив переменных запроса, чтобы его можно было использовать с функциейget_query_var
.
Шаг 3. Обновление правил перезаписи
После добавления правил перезаписи, WordPress не распознает их немедленно. Чтобы обновить правила, вам нужно перейти в админ-панель WordPress и открыть раздел "Настройки" > "Постоянные ссылки" и просто нажать "Сохранить изменения". Это принудит WordPress обновить правила перезаписи.
Шаг 4. Использование "дружественного" URL
Теперь вы сможете использовать "дружественный" URL:
http://website.com/myparameters/theparameter/
Когда пользователь переходит по этому URL, значение theparameter
будет доступно в вашем шорткоде через get_query_var('myvar')
.
Заключение
С помощью описанных выше шагов вы сможете создавать "дружественные" URL-адреса для страниц WordPress и передавать параметры, используя шорткоды. Этот метод не только делает ваши URL более удобочитаемыми, но и улучшает SEO-оптимизацию сайта за счет использования понятных и легко запоминающихся ссылок. Не забывайте периодически проверять и обновлять ваши правила перезаписи, особенно после внесения изменений в структуру ваших URL-адресов или при добавлении новых шорткодов.