$ _GET и WordPress - PullRequest
       5

$ _GET и WordPress

14 голосов
/ 19 июня 2009

Я хочу добавить пользовательский php-файл в WordPress, чтобы выполнить простое действие.

Пока у меня в теме index.php файл:

<a href="myfile.php?size=md">link</a>

и php

<?php echo "hello world"; ?>

<?php echo $_GET["size"]; ?>

<?php echo "hello world"; ?>

При нажатии на ссылку отображается:

hello world

WordPress берет на себя функцию $_GET, и мне нужно сделать несколько трюков, чтобы ее использовать? Что я делаю не так?

Редактировать :

<?echo "hello world";?>
<? 
  if (array_key_exists('size', $_GET))
    echo $_GET['size'];
?>
<?echo "end";?>

Ouputs:

hello world

Ответы [ 7 ]

12 голосов
/ 27 ноября 2013

Смотрите решение:

Чтобы иметь возможность добавлять собственные пользовательские переменные запросов, которые вы добавляете к URL-адресам, и работать с ними (например, www.site.com/some_page/?my_var=foo - например, с помощью add_query_arg()), необходимо добавить их в переменные общедоступного запроса, доступные для WP_Query. Они создаются, когда создается экземпляр WP_Query, но, к счастью, передаются через фильтр query_vars, прежде чем они фактически используются для заполнения свойства $query_vars WP_Query.

Для вашего случая:

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

и на странице вашего шаблона вызовите метод get следующим образом:

$size_var = (get_query_var('size')) ? get_query_var('size') : false;
if($size_var){
   // etc...
}

Больше в Кодексе : http://codex.wordpress.org/Function_Reference/get_query_var

Надеюсь, это поможет!

2 голосов
/ 19 июня 2009

Не уверен, покажет ли это что-нибудь, но попробуйте включить сообщение об ошибке с помощью:

<?php
   error_reporting(E_ALL);
   ini_set('display_errors', true);
?>

вверху страницы перед любым другим кодом.

Редактировать:

Из комментариев ОП:

глупый вопрос, но вы уверены, что вы просматриваем результаты вашего последнего изменения в файле, а не в кеше копия страницы или что-то? + Изменить «Привет мир» к чему-то еще. (Извините, хватаясь за соломинку, но это случилось со мной раньше) - Zenshai

Ахаха, человек, который делали изменения не изменились правильный файл. Теперь это работает - marcgg

Ошибка однорангового программирования ^^ - marcgg

Это было бы "или что-то", не могу сказать, сколько раз я сделал что-то подобное. Рад, что вы смогли понять это в конце концов. - Zenshai

Я обычно обнаруживаю подобные ошибки только тогда, когда они начинают игнорировать все, что я знаю о языке или среде.

1 голос
/ 19 июня 2009

Wordpress не берет $ _GET. Вы уверены, что передаете переменную правильно?

Если вы жестко закодировали переменную в URL, убедитесь, что она имеет следующую форму:

YOUR_SITE_PATH/?variable_name=variable_value

пожалуйста, не используйте "/" в конце URL, перед "?"

Я не вижу ваш код index.php, но убедитесь, что переменная "size" установлена ​​вручную в URL или из отправленной формы. Если вы используете форму, убедитесь, что вы используете method = "GET". Если вы используете method = "POST", тогда ваша переменная будет в $ _POST ['size'].

Надеюсь, это поможет.

1 голос
/ 19 июня 2009

Попробуйте это:

<?echo "hello world";?>
<? 
  if (array_key_exists('size', $_GET))
    echo $_GET['size'];
?>
<?echo "end";?>

Если вы видите

hello worldend

... это означает, что вы не устанавливаете параметр размера GET. Какой URL вы используете для доступа к указанной странице?

0 голосов
/ 27 марта 2013

Может быть, это может кто-нибудь

Пожалуйста, проверьте ваш htaccess файл. и там есть правило перезаписи

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase <<relative_url>>/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . <<relative_url>>/index.php [L]
</IfModule>
# END WordPress

Пожалуйста, измените <<lative_url >> на относительный URL по сравнению с вашим доменом

Я столкнулся с той же проблемой, и мой WordPress был установлен на Godaddy сервере. Но после изменения файла .htaccess проблема была решена.

0 голосов
/ 26 июня 2012

Несмотря на то, что это довольно старый пост, он может быть полезен, чтобы сообщить об этом .... Есть один плагин, который может очень легко облегчить обработку проблем $ _GET, $ _POST и объявления глобальных переменных. http://wordpress.org/extend/plugins/wordpress-registry/

0 голосов
/ 19 июня 2009

Возможно, вы захотите взглянуть на документацию WP об объекте WP Query.

http://codex.wordpress.org/Query_Overview

Похоже, что wordpress использует get_query_vars для метода объекта wp_query для получения запросов.

Вы также можете взглянуть на это: http://codex.wordpress.org/Custom_Queries

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...