Передача URL-параметров на страницы WordPress и красивый URL

Вопрос или проблема

Я создаю короткий код вот так

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-адресов или при добавлении новых шорткодов.

Оцените материал
Добавить комментарий

Капча загружается...