Curl外部API请求在页面上显示高于其他内容的内容

时间:2022-03-04 作者:John Emmett

我已经构建了一个插件,可以在WordPress网站上显示我们的客户反馈。我们使用一个称为“客户温度计”的外部反馈系统。他们有一个简单的API,可以使用URL来请求统计数据和注释等。这个示例显示了总统计数据,但我有一个更大的注释块函数,它在滑块中显示最近的注释。

返回总响应的示例URL:https://app.customerthermometer.com/api.php?apiKey=[apiKey-here]&getMethod=getNumResponsesValue

我可以使用下面的代码很好地得到响应,但是我实现的cURL请求和代码总是位于页面的顶部,无论我在哪里添加短代码。

我的类“picts\\u ct\\u api\\u connection”中的Call方法:

public function call($call) {

    $url = $this->get_url();
    $apikey = $this->get_api_key();
    $method = $this->build_apicall($call);
    
    $request_url = $url.$apikey.$method;
    
    $curl = curl_init($request_url);

    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_VERBOSE, 1);
    curl_setopt($curl, CURLOPT_POST, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_HEADER, false);

    $response = curl_exec($curl);

    curl_close($curl);

    return $response;
}
显示响应的快捷码函数

function picts_ct_responses( $atts = [], $content=null, $tag=\'\' ) {

    $method = array(
        \'getMethod\' => \'getNumResponsesValue\'
    );
 
    $api_call = new picts_ct_api_connection();

    $response = $api_call->call($method);

    echo $response;
}
add_shortcode( \'total_responses\', \'picts_ct_responses\' );
我在我的页面上的一些虚拟文本中间添加了我的短代码(如下所示):

Shortcode Added here

但我的页面上显示:

Content shows here

保存页面时,我还收到一个JSON响应错误,因此我觉得这与cURL响应提前打印到页面有关,而不是添加到变量中并在正确的位置使用有关。

我在网上搜索了一下,没有找到任何关于这方面的帮助。任何帮助都将不胜感激。

约翰

1 个回复
SO网友:Sally CJ

短代码必须始终return shortcode函数应该对输出和nothing进行回显,否则会出现问题(输出错位和JSON响应错误)。

所以你应该not 使用echo $response 相反,使用return $response 在您的picts_ct_responses() 作用

有关WordPress短代码的更多详细信息,请参阅https://developer.wordpress.org/apis/handbook/shortcode/.

相关推荐

显示作者姓名PHP(自制插件)

我有一个需要帮助的问题,因为我自己找不到解决办法。我接管了一个网站,之前有人在那里创建了一个自制插件。。使用默认插件“Contact Form 7”,用户可以在页面上创建帖子。()https://gyazo.com/c8b20adecacd90fb9bfe72ad2138a980 )关于自行创建的插件“Contact Form 7 extender”,帖子是通过PHP代码在后台生成的(https://gyazo.com/115a6c7c9afafd2970b66fd421ca76a3)其工作原理如下:如果