我想将自定义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
答案 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文件之后,问题得到了重新解决。