Извлечение параметра из URL-адреса в WordPress
Я пытаюсь передать параметр на сайт WordPress с использованием URL-адреса, например:
www.fioriapts.com/?ppc=1
будет URL.
Я собираюсь написать функцию в файле functions.php, но механика, как извлечь параметр в WordPress, вне меня. Я нахожу множество примеров того, как добавить параметр к URL-адресу с помощью функции add_query_arg()
, но ничего не нашел о том, как извлечь параметр. Заранее благодарю за любую помощь.
Ответы
Ответ 1
При передаче параметров через URL вы можете получить значения как параметры GET.
Использовать этот:
$variable = $_GET['param_name'];
//Or as you have it
$ppc = $_GET['ppc'];
Безопаснее сначала проверить переменную:
if (isset($_GET['ppc'])) {
$ppc = $_GET['ppc'];
} else {
//Handle the case where there is no parameter
}
Здесь немного прочтения параметров GET/POST, которые вы должны посмотреть: http://php.net/manual/en/reserved.variables.get.php
РЕДАКТИРОВАТЬ: я вижу, что этот ответ по-прежнему получает много трафика лет после его создания. Пожалуйста, прочитайте комментарии к этому ответу, особенно комментарии @emc, которые подробно описывают функцию WordPress, которая безопасно выполняет эту задачу.
Ответ 2
Почему бы просто не использовать get_query_var()
в WordPress? Ссылка на Кодекс
// Test if the query exists at the URL
if ( get_query_var('ppc') ) {
// If so echo the value
echo get_query_var('ppc');
}
Так как get_query_var может получить доступ только к параметрам запроса, доступным для WP_Query, для доступа к пользовательскому запросу var, например 'ppc', вам также необходимо зарегистрировать эту переменную запроса в вашем плагине или functions.php
, добавив действие во время инициализации:
add_action('init','add_get_val');
function add_get_val() {
global $wp;
$wp->add_query_var('ppc');
}
Или добавив хук в фильтр query_vars:
function add_query_vars_filter( $vars ){
$vars[] = "ppc";
return $vars;
}
add_filter( 'query_vars', 'add_query_vars_filter' );
Ответ 3
Вы можете попробовать эту функцию
/**
* Gets the request parameter.
*
* @param string $key The query parameter
* @param string $default The default value to return if not found
*
* @return string The request parameter.
*/
function get_request_parameter( $key, $default = '' ) {
// If not request set
if ( ! isset( $_REQUEST[ $key ] ) || empty( $_REQUEST[ $key ] ) ) {
return $default;
}
// Set so process it
return strip_tags( (string) wp_unslash( $_REQUEST[ $key ] ) );
}
Вот что происходит в функции
Здесь происходят три вещи.
- Сначала мы проверяем наличие ключа запроса или нет. Если нет, то просто верните значение по умолчанию.
- Если он установлен, мы сначала удаляем косые черты, выполняя wp_unslash. Читайте здесь, почему это лучше, чем stripslashes_deep.
- Затем мы дезинфицируем значение, выполняя простые strip_tags. Если вы ожидаете богатый текст из параметра, запустите его через wp_kses или аналогичные функции.
Вся эта информация плюс дополнительная информация о мышлении, стоящем за функцией, можно найти по этой ссылке https://www.intechgrity.com/correct-way-get-url-parameter-values-wordpress/
Ответ 4
В функции обратного вызова используйте параметр $ request
$parameters = $request->get_params();
echo $parameters['ppc'];