Как получить параметр URL из URL с помощью get_query_var?

19 мар. 2018 г., 10:27:28
Просмотры: 35.8K
Голосов: 4

Я пытаюсь получить пользовательский параметр URL из URL в WordPress.

Я добавляю следующий код в functions.php:

function add_query_vars_filter( $vars ){
    $vars[] = "token";
    return $vars;
}
add_filter( 'query_vars', 'add_query_vars_filter' );

Затем на веб-странице я пишу:

<?php  $token = get_query_var( 'token', $default = '');  ?>
<h1>Сейчас просматривается токен <?php echo (int) $token; ?> на 
статической главной странице</h1>

и перехожу на веб-страницу http://www.negovista.com/tokensuccess/?token=xxxxxx

Однако на странице отображается только

'Сейчас просматривается токен на статической главной странице' без xxxxxx

Кто-нибудь знает, есть ли ошибка в коде?

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

Я не вижу ничего неправильного в вашем коде. Вы отлаживали значение переменной $token?

cybmeta cybmeta
19 мар. 2018 г. 11:10:58

В исходном коде вашей страницы оба выражения <?php $token = get_query_var( 'token', $default = ''); ?> и <?php echo (int) $token; ?> выводятся как HTML-комментарии (<!--?php $token = get_query_var( 'token', $default = ''); ?--> и <!--?php echo (int) $token; ?-->). Похоже, есть синтаксическая ошибка в вашем PHP-шаблоне.

cybmeta cybmeta
19 мар. 2018 г. 11:22:59

Привет, спасибо за ответ! Думаю, вы правы. Я использую фронтенд-редактор под названием cornerstone, и просто вставить PHP-код в него невозможно. Придётся написать шорткод и использовать его вместо этого.

flemmingha flemmingha
19 мар. 2018 г. 23:25:39

@cybmeta Не могли бы вы подробнее объяснить ваш комментарий в виде ответа? У меня точно такая же проблема. Даже копирование и вставка примера из WP Codex не дает результата. Мой код: `function rj_add_query_vars_filter( $vars ){ $vars[] = "adminoption"; return $vars; } add_filter( 'query_vars', 'rj_add_query_vars_filter' );

echo get_query_var('adminoption', "<h1>NOT SET</h1>");` . Мой код всегда возвращает "NOT SET", хотя в URL-запросе указано "sometitle/?adminoption=TEST"

user658182 user658182
15 апр. 2018 г. 18:06:49

.. также использование echo $_GET["adminoption"]; работает нормально. Я могу вывести любое значение. Это в моем файле functions.php

user658182 user658182
15 апр. 2018 г. 18:10:12

@cybmeta Вы обращаетесь ко мне? Если да, то это неверно. У меня действительно были php-теги. Проблема была в том, что я использовал фронтенд-редактор под названием cornerstone, который не поддерживает php

flemmingha flemmingha
18 апр. 2018 г. 12:16:32

Нет, извини, @user658182,

cybmeta cybmeta
18 апр. 2018 г. 13:10:21

Ок, немного запутался :)

flemmingha flemmingha
18 апр. 2018 г. 13:16:43
Показать остальные 3 комментариев
Все ответы на вопрос 1
1

Мне удалось найти решение с помощью разработчиков на форуме theme.co apex.

Мне нужно было получить две строки запроса из моего URL www.randompage.com/tokensuccess/?token=token&username=username под названиями token и username.

Для этого я добавил следующий код в functions.php:

function add_query_vars_filter( $vars ){
  $vars[] = "token";
  $vars[] = "username";
  return $vars;
}

add_filter( 'query_vars', 'add_query_vars_filter' );

get_query_var('token');
get_query_var('username');

Это добавило две строки запроса в переменные token и username.

Затем я добавил следующий код в файл page.php, чтобы вывести значения и вставить их в базу данных.

<?php if (is_page('tokensuccess')) { if (get_query_var('token')) print "token = $token"; }  ?>

<?php if (is_page('tokensuccess')) { if (get_query_var('username')) print "username = $username"; }  ?>

<?php if (is_page('tokensuccess')) { 
    $token = get_query_var('token');
    $username = get_query_var('username');
    if( $token && $username ){

        global $wpdb;
        $wpdb->insert( 
            'wp_token',
            array( 
                'token' => $token, 
                'username' => $username 
            )
        );
    }
}

?>

Теперь я могу отправить клиенту ссылку с параметрами запроса и автоматически получить его токен и имя.

16 апр. 2018 г. 21:51:18
Комментарии

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

NextGenThemes NextGenThemes
27 янв. 2021 г. 18:21:22