Wordpress - создайте одну страницу, чтобы использовать URL для извлечения данных из REST API - PullRequest
0 голосов
/ 29 августа 2018

Буду признателен за любые советы, ресурсы или помощь по этому вопросу.

Я хочу иметь возможность иметь часть моего сайта Wordpress, где я могу анализировать URL, а затем использовать эти значения для наполнения страницы контентом из другого API.

Например:

server.zz / погода / Сидней% 20Australia

server.zz / погода / Хьюстон% 20Texas

Где я мог бы написать плагин, который бы перехватывал эти запросы, мог извлекать конец URL-адресов, а затем вызывал другой API, чтобы получить данные, чтобы затем объединить их в шаблон, который будет представлен посетителю.

Я знаю, что существуют пользовательские типы сообщений, но я не был уверен, что они являются лучшим решением для этого случая использования.

Как я уже сказал, любые советы или предложения будут оценены.

1 Ответ

0 голосов
/ 31 августа 2018

Я нашел решение этой проблемы с помощью 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');
...