Извлечение параметра из 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'];