插件激活时WP-JSON返回404

时间:2020-11-04 作者:Amy

我正在创建一个自定义插件。最近,它产生了错误,我不知道原因。

当插件激活时,我在站点运行状况屏幕中收到此错误:

REST API调用产生了以下意外结果:(404){“code”:“REST\\u no\\u route”,“message”:“未找到与URLand请求方法匹配的路由”,“data”:“status”:“404}}。

如果我导航到/wp-json,我会得到:

{“code”:“rest\\u no\\u route”,“message”:“找不到与URLand请求方法匹配的路由”,“data”:“status”404}

当我停用插件时,站点运行状况中的错误消失了,我可以在/wp json处看到内容。

我试着弄明白,研究了几个小时也没有用。我读到了。htaccess问题,所以我删除了我的并重新生成了它。但我知道这与插件有某种关系。

有什么想法吗?

1 个回复
SO网友:Amy

我找到了解决方案,并将在这里发布,以防将来对某人有所帮助。

底线是响应POST请求的函数中有一个输入错误。

我通过禁用激活类中插件的一部分,将其缩小到一个文件。通过这样做,我确定只有包含此文件/函数时才会发生错误:

if ( $_SERVER[\'REQUEST_METHOD\'] = \'POST\' ) {
    if ( !empty($_POST[\'update\']) ) {
        if ( $_POST[\'update\'] == "clear") {
            $now = new DateTime;
            $now->setTimezone(new DateTimeZone(get_option(\'timezone_string\')));
            update_option(\'time-tracker-sql-result\', array(\'result\'=>\'success\',\'updated\'=>$now->format(\'m-d-Y g:i A\'),\'error\'=>\'N/A\', \'file\'=>"", \'function\'=>""));
        }
    }
} 
问题是在我的第一行中,我使用了=而不是==更正的代码是:

if ( $_SERVER[\'REQUEST_METHOD\'] == \'POST\' ) {
    if ( !empty($_POST[\'update\']) ) {
        if ( $_POST[\'update\'] == "clear") {
            $now = new DateTime;
            $now->setTimezone(new DateTimeZone(get_option(\'timezone_string\')));
            update_option(\'time-tracker-sql-result\', array(\'result\'=>\'success\',\'updated\'=>$now->format(\'m-d-Y g:i A\'),\'error\'=>\'N/A\', \'file\'=>"", \'function\'=>""));
        }
    }
} 
修复后,错误消失,my/wp json再次可见!

相关推荐

使用wp-json接口将媒体项上传到特定路径

我正在使用WP-JSON API将我的所有帖子从我的live站点导入到我的开发站点。对于帖子、类别和作者来说,它工作得很好,但当我上传图片时,API会将文件视为当天已上传(例如,在2020年6月,所有文件都会转到wp-content/uploads/2020/06), 这会导致图像链接中断。如何上传文件,使其与源文件在同一日期上传?以下是我到目前为止的情况(在哪里$MEDIA 是生产服务器对的响应/wp-json/wp/v2/media 要列出所有媒体文件,请执行以下操作:# Loop through t