如何将外部函数传递给WP_REST_REQUEST

时间:2017-08-16 作者:DᴀʀᴛʜVᴀᴅᴇʀ

使用WP-REST学习我不确定如何正确地将PHP页面表单开头的内容传递给WP_REST_Response. 例如:

在开始page-foobar.php 如果我有:

// IP ADDRESS
function ipAddress() {
    if (isset($_SERVER[\'REMOTE_ADDR\'])) :
        $ip_address = $_SERVER[\'REMOTE_ADDR\'];
    else :
        $ip_address = "undefined";
    endif;
    return $ip_address;
}
/*
    Template Name: Foobar
*/
并且需要使用$ip_address 在中:

function foobar(\\WP_REST_Request $request) {
    if ($ip_address == "undefined") :
        return new WP_Error( \'bad_ip\', \'No IP found\', array( \'status\' => 404 ) );
    endif;
}
我该怎么做呢?当我搜索时,我发现:

Pass a Variable from one file to another in WordPress 但我不认为作为一个全球性的组织通过是一个好主意。Further researching Passing variables between files in WordPress or PHP 但我已经在函数中调用了模板。php。如果函数存储在不同的文件中,如何将其从模板传递到函数请求?

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

我的方法是,在functions.php 然后在你需要的时候给它打电话。

由于您正在尝试使用超全局变量,因此可以在任何地方访问它们。将代码从page-foobar.php 到您的主题functions.php, 并在需要访问时使用它:

ipAddress();
因此,在REST函数中,您可以:

function foobar(\\WP_REST_Request $request) {
    $ip_address = ipAddress();
    if ($ip_address == "undefined") :
        return new WP_Error( \'bad_ip\', \'No IP found\', array( \'status\' => 404 ) );
    endif;
}

结束

相关推荐

Php致命错误:无法将WP_REST_RESPONSE类型的对象用作wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php中

我向WordPress添加了一个自定义端点,如下所示: add_action( \'rest_api_init\', function () { register_rest_route( \'menc/v1\', \'/crosscat/(?P[\\w-]+)/(?P[\\w-]+)\', array( \'methods\' => \'GET\', \'callback\' => \'dept_cat_api\',&#x