$ _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
Ответы
Ответ 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 проблема была решена.