我以前也做过类似的事情,我为我的客户创建了一个元搜索站点,它使用WordPress Rest API搜索我的所有客户站点。
这里是在不同服务器上使用多个站点搜索的一个小主意,这只是一个使用PHP的粗略示例。如果您使用WP站点本身作为搜索站点的中心,那么使用WP\\u remote\\u get功能将更加容易。
要求:
每个站点都安装了WP REST API v2插件http://v2.wp-api.org/
在要请求远程的站点上启用curl
以下是代码:
使用CURL设置API请求
function call_api( $url ) {
$curl = curl_init();
curl_setopt_array( $curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true
));
$result = curl_exec($curl);
curl_close($curl);
return json_decode($result);
}
处理表单提交的搜索功能
function site_search( $sites, $search = \'\' ) {
$results = array();
$api_url = \'wp-json/wp/v2\';
$types = \'posts\';
foreach( $sites as $site ) {
$rest_url = "{$site}/{$api_url}/{$types}?search={$search}";
$req = call_api( $rest_url );
if( $req ) {
$results = array_merge( $results, $req );
}
}
return $results;
}
变量
//The search keyword
$search_key = isset( $_GET[\'search\'] ) ? $_GET[\'search\'] : \'\';
//lists of the sites you want to search with v2 rest api enabled
$sites = array(
\'http://wordpress-site-with-v2-rest-api-enabled.com\',
\'http://another-wp-site-with-v2-rest-api-enabled.com\',
);
处理程序
$contents = array();
if( !empty( $search_key ) ) {
$contents = site_search( $sites, $search_key );
}
HTML
<!DOCTYPE html>
<html>
<head>
<title>Test WP REST API</title>
</head>
<body>
<form method="GET">
<input type="text" name="search" value="<?php echo ( isset( $_GET[\'search\'] ) ? $_GET[\'search\'] : \'\' ); ?>" />
<input type="submit" value="SUBMIT" />
</form>
<?php foreach( $contents as $content ) : ?>
<div class="content">
<h2><a href="<?php echo $content->link; ?>"><?php echo $content->title->rendered; ?></a></h2>
<?php echo $content->excerpt->rendered; ?>
</div>
<?php endforeach; ?>
</body>
</html>
这只是一个粗略的例子,您需要进行安全性等方面的工作。希望这能帮助您开始。