2011-08-28 38 views
3

我使用外部文件来处理WP插件中的AJAX调用。对于它iterpret WP方法,我做了下面的技巧:WordPress的 - 如何从外部文件获取'页'变量?

require('../../../wp-blog-header.php'); 
header("HTTP/1.1 200 OK"); 

问题是,我似乎无法得到具体的,从它的页面状态的变量。例如,get_query_var('page')总是回到空。 是唯一的解决方案,把Javascript插入主插件.php文件,并从那里获得'页'变量,喂养​​它的脚本(它肯定应该通过钩子)?我想避免不惜一切代价混合使用PHP和JS。

P.S.对于更大的事实,我未能检索到该变量。不过,我仍然可以获得最大页码,请拨打$q = $GLOBALS['wp_query']; $max = $q->max_num_pages;。接受的答案当然是正确的,但我相信这是一个错误。当我有时间时,我会问wp-hacker的朋友,希望能更新这个问题。

回答

3

如果您使用的是get_query_var('page'),那么请确保您在调用该函数之前确实已在该页面上运行查询。

+0

我**通过'require('../../../wp-blog-header.php')'具有所有WP功能。看来这些函数看不到页面上下文。 – Arnthor

+0

如果你打开PHP错误,你会得到什么?那个'get_query_var'的'var_dump'是什么? –

+0

'string''(length = 0)'。 – Arnthor

0

对评论有点长,所以我将其添加为答案。如果它不包含解决方案,请联系我:

get_query_var('page')只有在运行实际查询时才会返回一些内容。当你直接请求你的插件PHP脚本时,肯定不是这种情况。

所以问题是,你指的是哪一种page变量?可能是$_REQUEST['page']?这只是猜测,也许你可以添加到你的问题更多关于正在发起你的AJAX调用的页面的信息。

+0

这是包含帖子的DB查询的变量。据我所知,所有与DB的交互被封装到WP中的WP_Query类中,该类(该类)具有一些附加字段,具体取决于查询的类型。就像,如果它是被提取的帖子的页面,你可以通过阅读适当的字段或者通过帮助者方法来获得该页面的实际编号。所以它肯定不是$ _REQUEST。 – Arnthor