$ _GET和WordPress

时间:2009-06-19 16:46:28

标签: php 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";?>

输出:

hello world

7 个答案:

答案 0 :(得分:12)

参见解决方案:

为了能够添加和使用您附加到网址的自定义查询变量(例如:www.site.com/some_page/?my_var=foo - 例如使用add_query_arg()),您需要将它们添加到公众查询变量可用于WP_Query。这些是在WP_Query实例化时构建的,但幸运的是,它们在实际用于填充query_vars的{​​{1}}属性之前通过过滤器$query_vars

对于你的情况:

WP_Query

并在您的模板页面上调用get方法:

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

Codex的更多信息 http://codex.wordpress.org/Function_Reference/get_query_var

我希望它有所帮助!

答案 1 :(得分:2)

不确定这是否会显示任何内容,但请尝试使用以下命令启用错误报告:

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

在任何其他代码之前的页面顶部。

修改:

来自OP评论:

  愚蠢的问题,但你确定你   正在查看您最新的结果   更改文件而不是缓存   页面的副本或什么?更改   “你好世界”到别的地方。   (抱歉抓住稻草,但是这个   发生在我之前) - Zenshai

     啊哈哈,那个人   正在做的改变没有改变   正确的文件。它现在正在运作 -   marcgg

     

对等编程失败^^ - marcgg

     

这将是“或某事”,   不能告诉你我有多少次   做了类似的事情。很高兴你   能够最终搞清楚。    - Zenshai

我经常发现这些错误,只有当他们开始违反我对语言或环境所知的一切时。

答案 2 :(得分:1)

试试这个:

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

如果你看到

hello worldend

...这意味着你没有设置尺寸GET参数。您使用什么URL访问该页面?

答案 3 :(得分:1)

Wordpress不接受$ _GET。你确定你正确传递变量吗?

如果您在网址中对变量进行硬编码,请确保其格式为:

YOUR_SITE_PATH/?variable_name=variable_value

请不要在“?”

之前的网址末尾添加“/”

我看不到你的index.php代码,但确保变量“size”可以在url中手动设置,也可以从提交的表单中设置。如果您使用表单,请确保使用method =“GET”。如果你使用method =“POST”,那么你的变量将在$ _POST ['size']中。

希望这有帮助。

答案 4 :(得分:0)

您可能需要查看WP有关WP Query对象的文档。

http://codex.wordpress.org/Query_Overview

似乎wordpress使用get_query_vars方法来获取wp_query对象的查询。

你也可以看一下这个: http://codex.wordpress.org/Custom_Queries

答案 5 :(得分:0)

虽然它很老,但它可能很有用,让我们知道....有一个插件可以很好地处理$ _GET,$ _POST和全局变量声明问题。 http://wordpress.org/extend/plugins/wordpress-registry/

答案 6 :(得分:0)

可能有人可以

请检查您的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

请更改&lt;&lt; relative_url&GT;&GT;使用与您的域名相对的相对网址

我遇到了同样的问题,我的wordpress安装在godaddy服务器上。但是在更改.htaccess文件之后,问题得到了重新解决。