Подтвердить что ты не робот

$ _GET и WordPress

Я хочу добавить пользовательский 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
4b9b3361

Ответ 1

Не уверен, что это ничего не покажет, но попробуйте включить отчет об ошибках:

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

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

Изменить:

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

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

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

ошибка программирования сверстников ^^ - marcgg

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

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

Ответ 2

См. решение:

Чтобы иметь возможность добавлять и работать с вашими собственными часами запросов, которые вы добавляете к 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

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

Ответ 3

Попробуйте следующее:

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

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

hello worldend

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

Ответ 4

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

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

YOUR_SITE_PATH/?variable_name=variable_value

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

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

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

Ответ 5

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

http://codex.wordpress.org/Query_Overview

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

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

Ответ 6

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

Ответ 7

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

Пожалуйста, проверьте файл 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

Измените < < relative_url → с относительным URL-адресом по сравнению с вашим доменом

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