Использование строки запроса в URL для отображения контента на странице

23 авг. 2013 г., 18:35:59
Просмотры: 46.6K
Голосов: 10

Я хотел бы отображать определенную информацию на своей странице в зависимости от того, с какой страницы пришел посетитель. Я могу настроить ссылку на эту страницу следующим образом:

www.example.com/page?parameter=myparameter

Есть ли способ получить доступ к этому параметру, чтобы я мог отобразить его где-то в содержимом своей страницы?

2
Комментарии

Извините, я понимаю, что ответы приведены в качестве примеров, но считаю важным отметить, что их не следует использовать как есть. Пользовательский ввод (например, параметры строки запроса) никогда не должен выводиться без санации, чтобы предотвратить XSS-атаки! Все приведенные ответы уязвимы к XSS и должны как минимум содержать предупреждение.

kubi kubi
14 авг. 2019 г. 11:43:54

Для БЕЗОПАСНОЙ реализации используйте этот плагин - или изучите код плагина на github.

1NN 1NN
12 окт. 2022 г. 13:15:14
Все ответы на вопрос 3
1

Согласно ответу автора в его вопросе:

С вашей помощью и небольшим поиском в Google я собрал шорткод, который возвращает значение любого параметра из URL. Вот он:

// ЭТО ПРОИЗВОЛЬНЫЙ ШОРТКОД ДЛЯ ОТОБРАЖЕНИЯ ПАРАМЕТРА ИЗ URL
function URLParam( $atts ) {  
    extract( shortcode_atts( array(
        'param' => 'param',
    ), $atts ) );
    return $_GET[$param];  
}
add_shortcode('URLParam', 'URLParam'); 

Я использую этот шорткод таким образом, чтобы получить trip_type из моего URL:

[URLParam param='trip_type']
9 нояб. 2016 г. 21:03:20
Комментарии

Это помогло мне, спасибо! Как получить значения из данных формы POST вместо строки запроса?

Amjad Amjad
22 мая 2018 г. 07:04:51
16

Вы можете использовать PHP сессию, проверить запрос в объекте query или использовать $_GET с вашим URL, но это не подходит для передачи конфиденциальной информации...

Например, так:

Получить название поездки из URL

$tripname = $_GET['tripname'];

Использовать его в заголовке:

if(isset($tripname)) echo '<h1>Запланируйте поездку в ' .$tripname. '</h1>';

23 авг. 2013 г. 18:40:21
Комментарии

Спасибо! Это не конфиденциальная информация. Как мне это сделать?

user3515 user3515
23 авг. 2013 г. 18:41:13

Это может вам помочь: http://www.w3schools.com/php/php_get.asp

Dan Dan
23 авг. 2013 г. 18:42:09

Спасибо! Могу ли я добавить это прямо на страницу, или это нужно поместить в файл шаблона?

user3515 user3515
23 авг. 2013 г. 18:43:01

Зависит от того, где вам это нужно - если это отображается только на странице, которая работает на одном шаблоне, вы бы разместили его там. Откуда берется информация и где она окажется?

Dan Dan
23 авг. 2013 г. 18:49:16

Ситуация следующая: у меня много 'страниц поездок', каждая из которых содержит информацию о конкретной поездке, которую мы организуем. Затем пользователи нажимают "зарегистрироваться", и это переносит их на страницу с формой регистрации (gravity forms). Я хочу, чтобы на странице (или в описании вверху формы) было написано "Заполните эту форму, чтобы зарегистрироваться на поездку xxxx".

user3515 user3515
23 авг. 2013 г. 18:55:22

Поэтому я добавил к URL кнопки регистрации на каждой странице поездки www.website.com/registration?trip=tripname.

user3515 user3515
23 авг. 2013 г. 18:55:49

Обновил ответ выше, посмотрите, что думаете.

Dan Dan
23 авг. 2013 г. 19:07:11

Так куда мне вставить этот код?

user3515 user3515
23 авг. 2013 г. 19:11:39

Я также хотел бы использовать такую же функциональность на другой странице с формой, где они запрашивают у нас отправку маршрута. Будет ли ваше решение работать? Может, шорткод был бы лучшей идеей??

user3515 user3515
23 авг. 2013 г. 19:16:32

Создание шорткода потребует больше работы и времени, поэтому всё зависит от того, что вы хотите сделать в целом. Код, о котором я упомянул, должен быть размещен на странице с формой. Если они находятся на определенном шаблоне, например page.php, его нужно поместить туда.

Dan Dan
23 авг. 2013 г. 19:30:07

Они оба на одном шаблоне, но я хочу, чтобы вокруг них был разный текст. Можно ли это сделать без шорткода?

user3515 user3515
23 авг. 2013 г. 19:38:47

Или, может быть, вы знаете, где можно найти что-то вроде "создание шорткодов для чайников"?

user3515 user3515
23 авг. 2013 г. 19:39:11

Я предлагаю потратить немного времени на WP Codex и почитать про шорткоды. В интернете есть полезная информация. Вы могли бы переключаться между двумя фрагментами текста в одном шаблоне, но условное выражение — это уже другой вопрос.

Dan Dan
23 авг. 2013 г. 19:42:55

Я посмотрю. Что вы имеете в виду под "переключаться между двумя фрагментами текста в одном шаблоне"?

user3515 user3515
23 авг. 2013 г. 19:46:11

Вам понадобится условие. Посмотрите операторы "if" ;)

Dan Dan
23 авг. 2013 г. 20:04:28

Спасибо! С вашей помощью и небольшим гуглением я собрал базовый шорткод, который возвращает значение конкретного параметра. Обновленный код выше

user3515 user3515
23 авг. 2013 г. 20:09:38
Показать остальные 11 комментариев
0

Вот еще один отличный способ реализовать это. Этот метод не требует использования шорткодов и будет автоматически обновлять каждую созданную страницу, где присутствует параметр "trip"!

1) Перейдите в папку вашей темы и откройте файл functions.php (или создайте его, если он отсутствует)

2) Добавьте следующий код и сохраните:

<?php 
    add_filter( 'the_content', 'my_trip_filter' );

    function my_trip_filter( $content ) {
        if ( isset($_REQUEST['trip']) && is_single() ) {
            $content = "<h1>Заполните эту форму для регистрации на поездку " . $_REQUEST['trip'] . "</h1>" . $content;
        }

        return $content;

    }
?>

Этот код использует фильтр the_content для переопределения каждый раз, когда вы используете функцию the_content() для вывода информации блога. Он определяет, является ли запрошенная страница одиночной страницей/записью, а не архивом. В него можно добавить дополнительную логику или переопределения. Главное, убедитесь, что вы возвращаете переменную $content, и любое желаемое сообщение будет выведено на экран.

Наслаждайтесь!

23 авг. 2013 г. 23:26:20