wp-load.php not working

时间:2019-02-11 作者:Mire2030

我正在使用require_once(../../../../wp-load.php), 这是文件的正确相对路径,但它不起作用。如果我使用wp-blog-header.php 相反,这是可行的,使我能够使用WP函数。你知道为什么吗wp-load.php 不起作用吗?

谢谢,埃米尔

1 个回复
SO网友:Tom J Nowell

您不需要加载wp-load.php, 您可以使用REST API端点构建一个端点,以使用javascript进行轮询。

在插件中,或functions.php, 我们将创建一个示例端点,它将位于https://yoursite.com/wp-json/yourname/v1/yourendpoint, 它将接收参数,并用JSON片段进行回复,就像您从任何其他REST API中所期望的那样。

此API将显示“Hello World!”。

要创建它,请将以下内容放入插件或functions.php:

function hello() {
    return "Hello World!";
}
然后注册:

add_action( \'rest_api_init\', function () {
        register_rest_route( \'yourname/v1\', \'/yourendpoint/\', array(
                \'methods\' => \'GET\',
                \'callback\' => \'hello\'
        ) );
} );
恭喜你!您有一个功能完备的REST API端点!尝试访问https://yoursite.com/wp-json/yourname/v1/yourendpoint 在浏览器中,您将看到:

"Hello World!"
如果返回一个数组或对象,它们将显示为等效的JSON。

现在,我们可以在javascript中这样调用它:

fetch(\'/wp-json/yourname/v1/yourendpoint\')
  .then(function(response) { return response.json();})
  .then(function(data) {
    alert(data); // outputs Hello World!
    // do stuff
  });
或者如果你不喜欢fetch 并且更喜欢jQuery:

jQuery.ajax({
    url: \'/wp-json/yourname/v1/yourendpoint\'
}).done(function( data ) {
    alert( data );
    // do stuff
});
确保已打开永久链接,记住返回数据而不是回显数据,嘿,普雷斯托,完成了!这就像其他REST API一样,例如twitter、mailchimp和facebook的REST API。

奖励积分:

创建端点时,您可以传递额外的字段,告诉它谁可以访问它,以及您使用了哪些参数,它会为您记录所有内容并进行所有检查,这样您就不必(而且它会正确执行,所以您不必担心出错)

  • 您可以使用标准的HTTP方法,例如。GET 为了得到一些东西,PUTPOST 放置/推动某物DELETE 要删除某些内容,请不要创建端点以返回帖子列表,WordPress已经在/wp-json/wp/v2/posts! 对于页面等,您也可以创建它们,但最重要的是,在文件夹中创建一个PHP文件,加载wp-load.php, 然后直接调用它,这是一个巨大的安全问题,很容易中断。不要那样做。

  • 相关推荐

    如何从任何位置包含wp-load.php?

    我有一个插件,它通过jQuery调用独立的php脚本(myAjax.php)。插件中的ajax()脚本。我需要将以下代码放入myAjax中。php文件:require_once(\'../../../wp-load.php\'); if (!is_user_logged_in()){ die(\"You Must Be Logged In to Access This\"); } if( ! current_user_can(\'edit_files\')