Title: WP Router
Author: Jonathan Brinley
Published: <strong>2011年5月23日</strong>
Last modified: 2012年8月6日

---

プラグインを検索

このプラグインは **WordPress の最新3回のメジャーリリースに対してテストされていま
せん**。もうメンテナンスやサポートがされていないかもしれず、最新バージョンの WordPress
で使用した場合は互換性の問題が発生する可能性があります。

![](https://s.w.org/plugins/geopattern-icon/wp-router.svg)

# WP Router

 作者: [Jonathan Brinley](https://profiles.wordpress.org/jbrinley/)

[ダウンロード](https://downloads.wordpress.org/plugin/wp-router.zip)

 * [詳細](https://ja.wordpress.org/plugins/wp-router/#description)
 * [レビュー](https://ja.wordpress.org/plugins/wp-router/#reviews)
 *  [インストール](https://ja.wordpress.org/plugins/wp-router/#installation)
 * [開発](https://ja.wordpress.org/plugins/wp-router/#developers)

 [サポート](https://wordpress.org/support/plugin/wp-router/)

## 説明

WordPress’s rewrite rules and query variables provide a powerful system
 for mapping
URL strings to collections of posts. Every request is parsed into query variables
and turned into a SQL query via `$wp_query->query()`.

Sometimes, though, you don’t want to display a list of posts. You just want
 a URL
to map to a callback function, with the output displayed in place of posts in whatever
theme you happen to be using.

That’s where WP Router comes in. It handles all the messy bits of registering
 post
types, query variables, rewrite rules, etc., and lets you write code to do what 
you want it to do. One function call is all it takes to map a URL to your designated
callback function and display the return value in the page.

Created by [Flightless](http://flightless.us)

### Usage

#### Creating Routes

 * Your plugin should hook into the `wp_router_generate_routes` action.
    The callback
   should take one argument, a `WP_Router` object.
 * Register a route and its callback using `WP_Router::add_route( $id, $args )`
    - `$id` is a unique string your plugin should use to identify the route
    - `$args` is an associative array, that sets the following properties for your
      route.
       Any omitted argument will use the default value.
       * `path` (required) – A regular expression to match against the request path.
         
         This corresponds to the array key you would use when creating rewrite rules
         for WordPress.
       * `query_vars` – An associative array, with the keys being query vars, and
         the
          values being explicit strings or integers corresponding to matches
         in the path regexp. Any query variables included here will be automatically
         registered.
       * `title` – The title of the page.
       * `title_callback` – A callback to use for dynamically generating the title.
         
         Defaults to `__()`. If `NULL`, the `title` argument will be used as-is.
         if page_callback or `access_callback` returns `FALSE`, `title_callback`
         will not be called.
       *     ```
             title_callback can be either a single callback function or an array specifying
             ```
         
       * callback functions for specific HTTP methods (e.g., `GET`, `POST`, `PUT`,`
         DELETE`, etc.).
          If the latter, the `default` key will be used if no other
         keys match the current request method.
       * `title_arguments` – An array of query variables whose values will be passed
         
         as arguments to `title_callback`. Defaults to the value of `title`. If 
         an argument is not a registered query variable, it will be passed as-is.
       * `page_callback` (required) – A callback to use for dynamically generating
         the
          contents of the page. The callback should either echo or return the
         contents of the page (if both, the returned value will be appended to the
         echoed value). If FALSE is returned, nothing will be output, and control
         of the page contents will be handed back to WordPress. The callback will
         be called during the `parse_request` phase of WordPress’s page load. If`
         access_callback` returns `FALSE`, `page_callback` will not be called.
       *     ```
             page_callback can be either a single callback function or an array specifying
             ```
         
       * callback functions for specific HTTP methods (e.g., `GET`, `POST`, `PUT`,`
         DELETE`, etc.).
          If the latter, the `default` key will be used if no other
         keys match the current request method.
       * `page_arguments` – An array of query variables whose values will be passed
         as
          arguments to `page_callback`. If an argument is not a registered query
         variable, it will be passed as-is.
       * `access_callback` – A callback to determine if the user has permission 
         to access
          this page. If `access_arguments` is provided, default is `current_user_can`,
         otherwise default is `TRUE`. If the callback returns `FALSE`, anonymous
         users are redirected to the login page, authenticated users get a 403 error.
       *     ```
             access_callback can be either a single callback function or an array specifying
             ```
         
       * callback functions for specific HTTP methods (e.g., `GET`, `POST`, `PUT`,`
         DELETE`, etc.).
          If the latter, the `default` key will be used if no other
         keys match the current request method.
       * `access_arguments` – An array of query variables whose values will be passed
         
         as arguments to `access_callback`. If an argument is not a registered query
         variable, it will be passed as-is.
       * `template` – An array of templates that can be used to display the page.
         If a path
          is absolute, it will be used as-is; relative paths allow for
         overrides by the theme. The string `$id` will be replaced with the ID of
         the route. If no template is found, fallback templates are (in this order):`
         route-$id.php`, `route.php`, `page-$id.php`, page.php, `index.php`. If 
         FALSE is given instead of an array, the page contents will be printed before
         calling `exit()` (you can also accomplish this by printing your output 
         and exiting directly from your callback function).

Example:
 $router->add_route(‘wp-router-sample’, array( ‘path’ => ‘^wp_router/(.*?)
$’, ‘query_vars’ => array( ‘sample_argument’ => 1, ), ‘page_callback’ => array(get_class(),‘
sample_callback’), ‘page_arguments’ => array(‘sample_argument’), ‘access_callback’
=> TRUE, ‘title’ => ‘WP Router Sample Page’, ‘template’ => array(‘sample-page.php’,
dirname(**FILE**).DIRECTORY_SEPARATOR.’sample-page.php’) ));

In this example, the path `http://example.com/wp_router/my_sample_path/` will call

the function `sample_callback` in the calling class. The value of the `sample_argument`
query variable, in this case “my_sample_path”, will be provided as the first and
only argument to the callback function. If the file `sample-page.php` is found in
the theme, it will be used as the template, otherwise `sample-page.php` in your 
plugin directory will be used (if that’s not found either, fall back to `route-wp-
router-sample.php`, etc.).

#### Editing Routes

 * You can hook into the `wp_router_alter_routes` action to modify routes created
   by other plugins. The callback should take one argument, a `WP_Router` object.

#### Public API Functions

Creating or changing routes should always occur in the context of the `wp_router_generate_routes`
or `wp_router_alter_routes` actions, using the `WP_Router` object supplied to your
callback function.

 * `WP_Router::edit_route( string $id, array $changes )` – update each
    property
   given in `$changes` for the route with the given ID. Any properties not given
   in `$changes` will be left unaltered.
 * `WP_Router::remove_route( string $id )` – delete the route with the given ID
 * `WP_Router::get_route( string $id )` – get the `WP_Route` object for the given
   ID
 * `WP_Router::get_url( string $id, array $arguments )` – get the URL to reach the
   route with the given ID, with the given query variables and their values
 * `WP_Route::get( string $property )` – get the value of the specified property
   for
    the `WP_Route` instance

## インストール

 1. Download and unzip the plugin
 2. Upload the `WP-Router` folder to the `/wp-content/plugins/` directory
 3. Activate the plugin through the ‘Plugins’ menu in WordPress
 4. You should see the sample page at http://example.org/wp_router/sample/. Apart from
    that, there is no public UI for this plugin. You will not see any changes unless
    the plugin’s API is called by another active plugin.

## 評価

![](https://secure.gravatar.com/avatar/d6499e15c7ebe0b88d18d441a03689724c5962bd5ebf75f5f81fd32b6ba67e53?
s=60&d=retro&r=g)

### 󠀁[Интересный плагин](https://wordpress.org/support/topic/%d0%b8%d0%bd%d1%82%d0%b5%d1%80%d0%b5%d1%81%d0%bd%d1%8b%d0%b9-%d0%bf%d0%bb%d0%b0%d0%b3%d0%b8%d0%bd-3/)󠁿

 [petrozavodsky](https://profiles.wordpress.org/vovasik/) 2017年10月27日

Интересный плагин

 [ 3件のレビューをすべて表示 ](https://wordpress.org/support/plugin/wp-router/reviews/)

## 貢献者と開発者

WP Router はオープンソースソフトウェアです。以下の人々がこのプラグインに貢献してい
ます。

貢献者

 *   [ Jonathan Brinley ](https://profiles.wordpress.org/jbrinley/)

[“WP Router” をあなたの言語に翻訳しましょう。](https://translate.wordpress.org/projects/wp-plugins/wp-router)

### 開発に興味がありますか ?

[コードを閲覧](https://plugins.trac.wordpress.org/browser/wp-router/)するか、[SVN リポジトリ](https://plugins.svn.wordpress.org/wp-router/)
をチェックするか、[開発ログ](https://plugins.trac.wordpress.org/log/wp-router/)を
[RSS](https://plugins.trac.wordpress.org/log/wp-router/?limit=100&mode=stop_on_copy&format=rss)
で購読してみてください。

## 変更履歴

#### 0.5

 * Filter get_permalink on router pages to point to the requested URI
 * Filter post meta for the placeholder page when on a router page to provide a 
   title to WP SEO
 * Added `wp_router_placeholder_postmeta` filter for adding additional meta to the
   placeholder page

#### 0.4

 * Prevent redirect from route pages with the “page” or “paged” query arg

#### 0.3.3

 * Prevent redirect from all route pages when %category% is in the permastruct
 * Redirect placeholder page to the blog front page
 * Fix usage of translation functions

#### 0.3.2

 * Make $arguments param optional for WP_Router::get_url() and WP_Router::url()

#### 0.3.1

 * Added WP_Router::get_url()
 * Added WP_Route::url()

#### 0.3

 * Added `FALSE` option to template parameter to indicate immediate `exit()`
 * Added option to specify different callback functions depending on the HTTP request
   method
 * Verified compatibility with WordPress 3.0
 * Added WP_Router::get_url() function

#### 0.2

 * Added the `template` argument

#### 0.1

 * Initial version

## メタ

 *  バージョン **0.5**
 *  最終更新日 **14年前**
 *  有効インストール数 **800+**
 *  WordPress バージョン ** 3.0またはそれ以降 **
 *  検証済み最新バージョン: **3.4.2**
 *  言語
 * [English (US)](https://wordpress.org/plugins/wp-router/)
 * タグ
 * [URL mapping](https://ja.wordpress.org/plugins/tags/url-mapping/)
 *  [詳細を表示](https://ja.wordpress.org/plugins/wp-router/advanced/)

## 評価

 5つ星中3.7つ星

 *  [  2 5-星レビュー     ](https://wordpress.org/support/plugin/wp-router/reviews/?filter=5)
 *  [  0 4-星レビュー     ](https://wordpress.org/support/plugin/wp-router/reviews/?filter=4)
 *  [  0 3-星レビュー     ](https://wordpress.org/support/plugin/wp-router/reviews/?filter=3)
 *  [  0 2-星レビュー     ](https://wordpress.org/support/plugin/wp-router/reviews/?filter=2)
 *  [  1 1-星レビュー     ](https://wordpress.org/support/plugin/wp-router/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/wp-router/reviews/#new-post)

[すべてのレビューを見る](https://wordpress.org/support/plugin/wp-router/reviews/)

## 貢献者

 *   [ Jonathan Brinley ](https://profiles.wordpress.org/jbrinley/)

## サポート

意見や質問がありますか ?

 [サポートフォーラムを表示](https://wordpress.org/support/plugin/wp-router/)

## 寄付

このプラグインが今後も改善できるよう応援しませんか ?

 [ このプラグインに寄付 ](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A69NZPKWGB6H2)