创建后变量处理页面

时间:2014-07-16 作者:ashraj98

我需要创建一个处理POST请求的空白PHP页面。基本上,一个网站会给我发送一些post变量。我需要在mycred插件中使用这些变量。这是我的代码:

require_once("../../../../wp-load.php");
if (isset($_POST[\'reward_amount\'])) {

$toaward = $_POST[\'reward_amount\'];
    $user = $_POST[\'sid\'];

    if (!function_exists(mycred_add))
            echo "Failed to add!";
    if (mycred_add(\'Points_for_______________\', 1, 1, \'%plural% for ------ completion\', $_POST[\'oid\'] )) {
            echo "Success!";
            //header("HTTP/1.1 200 OK");
    } else {
            echo "Fail!";
            //header("HTTP/1.1 412 Precondition Failed");
    }
}
这是可行的,但我使用的站点不允许在HTTP响应中返回HTML。如何删除中包含的HTML代码wp-load.php 但是仍然保留Wordpress函数支持以便我可以使用Wordpress函数?我也试着包括wp-blog-header.php 也一样,但没有用。

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

您会看到很多代码,其中包括wp-load.phpwp-blog-header.php 在加载到WordPress上下文之外的php页面中使用WordPress API。通常有更好的方法来实现这一点。还值得注意的是,任何这样做的插件都会被WordPress拒绝。org插件库,有很好的理由-它容易出现几种类型的失败。

无论如何,在这种情况下,我会add a rewrite endpoint 将请求定向到,因此请求由WordPress处理。

function wpd_mycred_endpoint(){
    add_rewrite_endpoint( \'mycred\', EP_ROOT );
}
add_action( \'init\', \'wpd_mycred_endpoint\' );
一如既往,修改重写规则时,必须刷新规则才能生效。这是可以做到的via the API, 或者只需访问您的设置>永久链接页面。

然后钩住parse_request 操作,检查是否设置了端点,并在那里进行处理。然后退出脚本执行,以便不输出任何其他内容。

function wpd_mycred_parse( $request ){
    if( array_key_exists( \'mycred\', $request->query_vars ) ){
        // do your POST processing...
        die;
    }
}
add_action( \'parse_request\', \'wpd_mycred_parse\' );

SO网友:Laxmana

您可以创建页面模板,然后使用url ie使用该模板创建页面http://mydomain.com/reward-amount. 在页面模板中,您可以在不使用require_once.

EDIT

读一下米洛的答案。比我的好多了。

结束