【问题标题】:Overriding the WordPress response values覆盖 WordPress 响应值
【发布时间】:2020-10-08 14:26:45
【问题描述】:

我已经在 Wordpress Stack Exchange 上提出了一个关于此问题的问题,但没有得到任何答复。我已经更新了几次这个问题,因为我没有学到任何东西,所以也许不值得以原始形式回答,但现在我被卡住了。抱歉,如果我不应该在这里发布它 - 如果被问到,我会删除。原文在这里:

https://wordpress.stackexchange.com/q/375553/195300

我正在使用辅助 api 向 WordPress 网站提供内容。我可以使用表单、一些 AJAX 和一些 php 登录到该 api。但是,虽然我的 api 的响应是 200 OK,但 WordPress 总是返回 404 Not Found,如下所示。

既然我从我自己的 api 获得了正确的响应,我可以修改我从 Wordpress 获得的响应,以便我的 AJAX 可以读取它并执行某些操作。在控制台中,我看到了下面的响应。如果它没有将大量 HTML 附加到我自己生成的 {"success":true} 响应中,那一切都会好起来的。

{readyState: 4, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}
abort: ƒ (a)
always: ƒ ()
complete: ƒ ()
done: ƒ ()
error: ƒ ()
fail: ƒ ()
getAllResponseHeaders: ƒ ()
getResponseHeader: ƒ (a)
overrideMimeType: ƒ (a)
pipe: ƒ ()
progress: ƒ ()
promise: ƒ (a)
readyState: 4
responseText: "{"success":true}
↵<!DOCTYPE html>
↵<html lang="en-"
setRequestHeader: ƒ (a,b)
state: ƒ ()
status: 404
statusCode: ƒ (a)
arguments: null
caller: null
length: 1
name: "statusCode"
prototype: {constructor: ƒ}
__proto__: ƒ ()
[[FunctionLocation]]: jquery.js?ver=1.12.4-wp:4
[[Scopes]]: Scopes[3]
statusText: "Not Found"
success: ƒ ()
then: ƒ ()
__proto__: Object

我尝试在我的 php 中使用status_header();,但没有成功。

我也想知道是不是和这个有关的问题:jQuery Ajax returning 404 Error, but correct Response

如果是这样,我不确定我知道该怎么做......

【问题讨论】:

    标签: php jquery wordpress


    【解决方案1】:

    回答我自己的问题似乎很奇怪,但如果它对某人有用,这就是答案。

    要对插件进行 ajax 调用并正确接收响应,您必须向插件注册该端点。这使您可以避开 Wordpress 对您的保护。我不确定此处是否允许/接受指向 YouTube 的链接,但有一个很棒的视频 here。如果这被认为是不好的做法,我将删除。

    插件的php

    add_action ( 'rest_api_init', 'add_callback_url_endpoint' );
    
    function add_callback_url_endpoint(){
        register_rest_route(
        'my_route/',
        'receive_callback',
         array(
           'methods' => 'POST',
           'callback' => 'my_receive_callback'
            )
         );
      }
    
    
    function my_receive_callback($request_data){
        $data = array();
        $params = $request_data -> get_params();
        $index = $params['index'];
    
    if(isset($index)){
            $data = array(
    'index' => $index,
    'status' => 'OK'
    );    
    }else{
                $data = array(
    'status' => 'Not OK'
    }
       return $data;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-24
      • 2016-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多