WordPress存储库禁止我在非WordPress文件中调用wp-load.php

时间:2013-02-20 作者:Alexander

我制作了一个Wordpress插件,它是一种下载管理器。我有一个外部文件下载。负责下载的php。此文件不在Wordpress环境中,因此我必须调用:

$wp_root = dirname(dirname(dirname(dirname(__FILE__))));
require_once $wp_root.\'/wp-load.php\';
我可以使用$wpdb进行sql查询。

注意:此文件必须是外部文件,因为我使用函数“headers()”强制下载。

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: ".$ctype);
header("Content-Length: ".$size);
header("Content-Disposition: attachment; filename=".$info->url_file);
header("Content-Transfer-Encoding: binary");
我的插件工作得很好!,但当我想将其发布到Wordpress存储库时,他们回答我,禁止直接调用wp load。php或wp配置。php

包括wp配置。php和/或wp加载。php不是一个好主意,我们不能批准这样做的插件,除非它有很好的理由加载文件。由于并非所有WordPress安装都具有完全相同的文件结构,因此很容易失败。

我不知道用什么,因为我可以用$wpbd

注2:对于下载,我首先用DB验证它,然后下载。

这是我的插件->http://demo.gopymes.pe/social-godownload/

更新日期:2013年2月24日星期日

这对我来说越来越复杂了。我找不到关于“wp\\u-loaded”的文档,所以我对该函数感到迷茫。

我测试了“template\\u redirect”,但我意识到这不是我想要的,因为我将文档重定向到下载位置,我不想让用户知道要下载的文档位于何处。

我正在查看插件“DownloadMonitor”,奇怪的是,我犯了同样的错误,包括下载中的“wp load.php”和“wp login.php”。php,但是它们在Wordpress的存储库中,我没有离开。

好吧,继续找。。

更新

好吧,好吧,行了!

我用过

add_action(\'init\', \'process\');

function process() {
    if(!isset($_GET[\'goaction\'])) return;
    if($_GET[\'goaction\']==\'process\')
    include("godownload.php");
}

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

要发送HTTP头,只需尽早发送即可。关于行动wp_loaded 例如别忘了打电话exit; 完成后,WordPress不会在以后发送自己的标题。

另请参见How to Rewrite Wordpress URL for a Plugin

结束

相关推荐

Per theme plugins?

我正在构建一个插件,它可以对博客页面的评论部分进行大量修改。它认为我不能用一种适用于所有主题的方式来实现这一点——根据使用的特定主题,必须调整一些CSS。我猜在将来,插件还会在数据库中存储一些数据。所以我想它应该是一个插件,而不是一个主题。(?)因此,这些问题:有没有可能以某种方式表明插件只能处理这个主题和那个主题?然后发布一些相当简单的插件版本,每个版本都针对一组特定的主题进行了调整?或者插件应该与。。。是否存在所有主题?除了按主题插件和/或分叉和修改现有主题之外,你能想出其他解决方案吗?也许是儿童主题