Использование строки запроса в URL для отображения контента на странице
Я хотел бы отображать определенную информацию на своей странице в зависимости от того, с какой страницы пришел посетитель. Я могу настроить ссылку на эту страницу следующим образом:
www.example.com/page?parameter=myparameter
Есть ли способ получить доступ к этому параметру, чтобы я мог отобразить его где-то в содержимом своей страницы?

Согласно ответу автора в его вопросе:
С вашей помощью и небольшим поиском в 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']

Вы можете использовать PHP сессию, проверить запрос в объекте query или использовать $_GET с вашим URL, но это не подходит для передачи конфиденциальной информации...
Например, так:
Получить название поездки из URL
$tripname = $_GET['tripname'];
Использовать его в заголовке:
if(isset($tripname)) echo '<h1>Запланируйте поездку в ' .$tripname. '</h1>';

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

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

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

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

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

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

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

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

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

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

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

Вот еще один отличный способ реализовать это. Этот метод не требует использования шорткодов и будет автоматически обновлять каждую созданную страницу, где присутствует параметр "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, и любое желаемое сообщение будет выведено на экран.
Наслаждайтесь!
