对于此问题的任何建议,资源或帮助,我们将不胜感激。
我希望能够拥有我的Wordpress网站的一部分,在其中可以解析URL,然后使用这些值用来自另一个API的内容填充页面。
例如:
server.zz / weather / Sydney%20Australia
server.zz / weather / Houston%20Texas
在这里我可以编写一个插件来拦截这些请求,能够提取URL的末尾,然后调用另一个API来获取数据,然后将其合并为一个模板以呈现给访问者。
我知道有“自定义帖子类型”,但是我不确定它们是否是此用例的最佳解决方案。
正如我所说,任何建议都将受到赞赏。
答案 0 :(得分:1)
我通过使用add_rewrite_rule(),add_rewrite_endpoint()和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');