我想创建一个简单的wordpress网站,在其中我想在页面上显示一个搜索框。在文本/搜索框中搜索字符串时,应基于该字符串进行外部API调用,并向用户显示API返回的数据。到目前为止,我已成功从以下URL引用代码-https://rapidapi.com/blog/integrate-external-api-wordpress/.
但我无法根据文本框中传递的字符串调用API。我在子主题文件页面中完成了以下代码:-
<div id="primary" <?php generate_do_element_classes( \'content\' ); ?>>
<main id="main" <?php generate_do_element_classes( \'main\' ); ?>>
<form action="" method="post">
Enter query:
<input type=text name="t1">
<br>
<br>
<input type=submit name="s">
<?php
/**
* generate_before_main_content hook.
*
* @since 0.1
*/
do_action( \'generate_before_main_content\' );
if(isset($_POST[\'s\'])){
echo "good";
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "******API URL*****/".$_POST[\'t1\'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-rapidapi-host: XYZ",
"x-rapidapi-key: ABc"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
}
/**
* generate_after_main_content hook.
*
* @since 0.1
*/
do_action( \'generate_after_main_content\' );
?>
</form>
</main>
</div>
<?php
/**
* generate_after_primary_content_area hook.
*
* @since 2.0
*/
do_action( \'generate_after_primary_content_area\' );
generate_construct_sidebars();
get_footer();
当我点击提交按钮时,它会显示“未找到页面”。
最合适的回答,由SO网友:Tom J Nowell 整理而成
s
是保留关键字,不能重用WordPress本身使用的URL参数和查询变量。此问题与API请求代码无关。
因为您的表单有一个名为s
, 该请求被解释为搜索请求。由于在WordPress搜索中没有找到帖子,您得到了404回复。
一般来说,如果文档中列出的参数在WP_Query
post query对象,无法在URL中使用。
更改WordPress以允许s
要使用将削弱WordPress的大部分核心功能,需要对WordPress本身进行广泛的内部修改,并禁用所有与搜索相关的功能,以及在前端和WP Admin中使用类似系统的任何插件。