WordPress-构建一页以使用URL从REST API中提取数据

时间:2018-08-28 23:05:39

标签: wordpress api permalinks

对于此问题的任何建议,资源或帮助,我们将不胜感激。

我希望能够拥有我的Wordpress网站的一部分,在其中可以解析URL,然后使用这些值用来自另一个API的内容填充页面。

例如:

  

server.zz / weather / Sydney%20Australia

     

server.zz / weather / Houston%20Texas

在这里我可以编写一个插件来拦截这些请求,能够提取URL的末尾,然后调用另一个API来获取数据,然后将其合并为一个模板以呈现给访问者。

我知道有“自定义帖子类型”,但是我不确定它们是否是此用例的最佳解决方案。

正如我所说,任何建议都将受到赞赏。

1 个答案:

答案 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');