Intereting Posts
Получать сообщения между пользовательскими датами Я хочу получить все сообщения в блоге без имени пользователя и пароля Создайте MegaMenu с помощью ходунки и функции start_lvl Верно ли, что $ wpdb-> get_results быстрее WP_Query в большинстве случаев? get_comments_number () vs. get_post_field ('comment_count', ID) Могу ли я использовать несколько nav_walkers? скрыть короткий код с помощью крючков Аутентификация в WordPress, используя мою собственную двухфакторную систему аутентификации Изменение содержимого боковой панели администратора для отображения индикатора ожидающих сообщений Фильтрация петли Пользовательские типы сообщений и / или категории Как создать всплывающее окно так же, как функция всплывающего окна WordPress Элементы корзины WooCommerce Как иметь простой HTML-каталог в WP-сайте Как вызвать конкретную функцию, когда флажок установлен на странице параметров плагина Использовать touch_time () в интерфейсной форме через плагин

get_query_var против глобальных переменных запроса?

У меня есть запрос vars, определенный в functions.php, используя:

add_filter('init', 'add_query_vars'); function add_query_vars() { global $wp; $wp->add_query_var('profession'); } 

До сих пор, чтобы получить запрос var в шаблонах страниц, я использовал $profession = get_query_var('profession'); , Аналогичный пример $paged = get_query_var('paged'); также показан для переменной $paged на странице Codex для get_query_var() . Однако сегодня я узнал, что переменные запроса доступны как глобальные переменные. Все, что мне нужно сделать, это объявить global $profession; и я могу начать использовать значение переменной в любом месте шаблона. Это для меня, по-видимому, намного лучший способ доступа к часам запросов без накладных расходов на вложенные функции get_query_var() .

Есть ли веская причина использовать get_query_var() для извлечения запросов vars вместо доступа к ним в качестве глобальных переменных? Если нет, то почему get_query_var() даже существует?

Solutions Collecting From Web of "get_query_var против глобальных переменных запроса?"

get_query_var() – это оболочка для $wp_query->get($var); , Но глобальная $wp_query не всегда идентична той, которая была создана во время запроса. Это основная проблема с query_posts() .
И другие плагины также могут непреднамеренно переписывать эти переменные. Я видел, как плагины помещают $i в глобальное пространство имен …

И возвращаемые значения разные:

  • $GLOBALS['missing_var'] равно NULL если такой переменной нет. Строгая проверка типа: if ( NULL !== $GLOBALS['missing_var'] ) .
  • get_query_var('missing_var'); является пустой строкой, если эта переменная не существует. Строгая проверка типа: if ( '' !== get_query_var('missing_var') .

Когда другие программисты должны работать с вашим кодом, они всегда могут следовать за get_query_var() чтобы увидеть запасное значение. Это невозможно с глобальными переменными.

И тогда есть планы уменьшить количество глобальных переменных в WordPress. Используйте API (функция), и вы, вероятно, безопасны. Доступ к глобальным переменным, с другой стороны, может привести к проблемам.