WordPress中自定义端点中的未闭括号

时间:2017-02-26 21:38:44

标签: php wordpress

我最近在使用Wordpress时遇到了一些问题,并且在PHP错误的情况下使用了AJAX响应     警告:preg_match():编译失败:第555行/home/example/public_html/example.com/wp-includes/rest-api.php中偏移52处的不匹配括号

第555行是preg_match

这让我(两个孩子你没有)参加两个星期 我开始输入问题,但是可能会发生很多事情,因为我输入了问题并将代码分解为答案,行动和代码在下面

我有这个动作:

add_action('rest_api_init', function () {
    register_rest_route('sutcalendar/v1', '/sendAgentRequest/(?P<ampm>\d+)/(?P<time>\d+)/(?P<day>\d+)/(?P<month>\d+)/(?P<year>\d+)', array(
            'methods' => 'GET',
     'callback' => 'sut_set_agent_offer_endpoint',
    ));
});

这是调用它的js脚本(所有填充的字段都会调用exampl api调用)

 $.ajax({
            url: "https://www.standuptalent.com/wp-json/sutcalendar/v1/sendAgentRequest/" 
            + ampm + '/'
            + timeVal + '/'
            + day + '/'
            + month + '/' 
            + year + '/',
            dataType: 'json',
            type: 'get',
            contentType: 'json',
            success: function (data, textStatus, jQxhr) {
                console.log(data);
                console.log(textStatus);
                console.log(jQxhr);
            }
        });

它产生的网址:

https://www.example.com/wp-json/sutcalendar/v1/sendAgentRequest/pm/0830/27/2/2017/

最后是终点本身:

function sut_set_agent_offer_endpoint(WP_REST_Request $request) {
    $json = json_encode(array("post" => $_POST, "get" => $_GET));
    echo $json;
 return $json;
}

返回的错误是PHP WP错误:

 Warning: preg_match(): Compilation failed: unmatched parentheses at offset 52 in /home/example/public_html/example.com/wp-includes/rest-api.php on line 555

第555行是preg_match

这让我(两个孩子你没有)两个星期

1 个答案:

答案 0 :(得分:0)

这样做的唯一原因是我改变了'ampm​​&amp;和&#39; timeVal&#39;从小时和分钟到新名称,忘了我还没有改变动作的正则表达式,

将添加操作终结点更改为

add_action('rest_api_init', function () {
    register_rest_route('sutcalendar/v1', '/sendAgentRequest/(?P<ampm>\W+)/(?P<time>\W+)/(?P<day>\d+)/(?P<month>\d+)/(?P<year>\d+)', array(
            'methods' => 'GET',
     'callback' => 'sut_set_agent_offer_endpoint',
    ));
});

意味着前两个是任何url编码的字符,这也意味着您可以通过JavaScripts encodeURI(value)函数首先通过url编码来发布文本区域和多字文本字符串。

无论何时你正在改变点或创建一个新点,并且遇到问题,请使用regexp对字符串进行编码并使用\ X *进行匹配