Wordpress - 构建一个页面以使用 URL 从 REST API 中提取数据
Wordpress - Build one Page to use URL to pull data from REST API
对于此问题的任何建议、资源或帮助,我将不胜感激。
我希望能够拥有我的 Wordpress 站点的一部分,我可以在其中解析 URL,然后使用这些值用来自另一个 API 的内容填充页面。
例如:
server.zz/weather/Sydney%20Australia
server.zz/weather/Houston%20Texas
我可以写一个插件来拦截这些请求,能够提取 URL 的结尾,然后调用另一个 API 来获取数据,然后合并到一个展示给访客的模板。
我知道有自定义 Post 类型,但我不确定它们是否是此用例的最佳解决方案。
如我所说,如有任何意见或建议,我们将不胜感激。
我使用 add_rewrite_rule(), add_rewrite_endpoint(), and flush_rewrite_rule().
找到了解决这个问题的方法
对于我之前提供的示例,我在插件中创建了以下代码。
// Define the URL Rewrite Rules
function crw_rewrite_urls(){
add_rewrite_rule(
'^weather/(.+)$' ,
'index.php?weather_location=$matches[1]' ,
'top'
);
add_rewrite_endpoint('weather_location', EP_ROOT);
flush_rewrite_rules();
}
add_action('init', 'crw_rewrite_urls');
// Initialise the Query Variable
function crw_query_var( $vars ) {
$vars[] = 'weather_location';
return $vars;
}
// Check for the Variable and Display Content as needed
function crw_handler() {
global $wp_query;
if ( isset( $wp_query->query_vars['weather_location'] ) ) {
// Call the API, fill the Template here
}
return;
}
add_action('template_redirect', 'crw_handler');
对于此问题的任何建议、资源或帮助,我将不胜感激。
我希望能够拥有我的 Wordpress 站点的一部分,我可以在其中解析 URL,然后使用这些值用来自另一个 API 的内容填充页面。
例如:
server.zz/weather/Sydney%20Australia
server.zz/weather/Houston%20Texas
我可以写一个插件来拦截这些请求,能够提取 URL 的结尾,然后调用另一个 API 来获取数据,然后合并到一个展示给访客的模板。
我知道有自定义 Post 类型,但我不确定它们是否是此用例的最佳解决方案。
如我所说,如有任何意见或建议,我们将不胜感激。
我使用 add_rewrite_rule(), add_rewrite_endpoint(), and flush_rewrite_rule().
找到了解决这个问题的方法对于我之前提供的示例,我在插件中创建了以下代码。
// Define the URL Rewrite Rules
function crw_rewrite_urls(){
add_rewrite_rule(
'^weather/(.+)$' ,
'index.php?weather_location=$matches[1]' ,
'top'
);
add_rewrite_endpoint('weather_location', EP_ROOT);
flush_rewrite_rules();
}
add_action('init', 'crw_rewrite_urls');
// Initialise the Query Variable
function crw_query_var( $vars ) {
$vars[] = 'weather_location';
return $vars;
}
// Check for the Variable and Display Content as needed
function crw_handler() {
global $wp_query;
if ( isset( $wp_query->query_vars['weather_location'] ) ) {
// Call the API, fill the Template here
}
return;
}
add_action('template_redirect', 'crw_handler');