Title: Template Map
Author: Jon Christopher
Published: <strong>2014 年 7 月 18 日</strong>
Last modified: 2022 年 2 月 10 日

---

搜尋外掛

![](https://ps.w.org/template-map/assets/banner-772x250.jpg?rev=951721)

這個外掛**並未在最新的 3 個 WordPress 主要版本上進行測試**。開發者可能不再對這個
外掛進行維護或提供技術支援，並可能會與更新版本的 WordPress 產生使用上的相容性問題。

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

# Template Map

 由 [Jon Christopher](https://profiles.wordpress.org/jchristopher/) 開發

[下載](https://downloads.wordpress.org/plugin/template-map.1.0.1.zip)

 * [詳細資料](https://tw.wordpress.org/plugins/template-map/#description)
 * [使用者評論](https://tw.wordpress.org/plugins/template-map/#reviews)
 *  [安裝方式](https://tw.wordpress.org/plugins/template-map/#installation)
 * [開發資訊](https://tw.wordpress.org/plugins/template-map/#developers)

 [技術支援](https://wordpress.org/support/plugin/template-map/)

## 外掛說明

Template Map is a utility plugin designed to make the creation and management of
navigation elements in your custom theme that much easier. It abstracts the need
to hard code post IDs and the like from your global and header navigation systems(
if you choose to not use Menus) for instance.

#### For Example

Many times you may use something like the following to build your main site navigation:

    ```
    <nav>
      <ul>
        <li>
          <a href="<?php echo get_permalink( 83 ); ?>">About</a>
        </li>
      </ul>
    </nav>
    ```

That works great during initial development, and continues to hold up when you migrate
to production en masse for the first time. But what about when you’re making subsequent
updates and the post IDs in your development environment are different than those
in production? You could take the time to sync the databases each and every time,
but that’s a bit overkill. Here’s where Template Map comes in to play:

    ```
    <nav>
      <ul>
        <li>
          <?php $about_page_id = TemplateMap()->get_id_from_template( 'template-about.php' ); ?>
          <a href="<?php echo get_permalink( $about_page_id ); ?>">About</a>
        </li>
      </ul>
    </nav>
    ```

Template Map allows you to _dynamically_ retreive your desired post ID based on 
the Page Template you told it to use. Page Template filenames rarely (if ever) change,
so it’s the core concept of Template Map’s implementation. Everything works backwards
from here.

Naturally this philosophy assumes your Page Template is used only once, it’s important
to keep that in mind. Modern client sites often use unique Page Templates for the‘
parent’ pages of each site section.

#### Current Site Section

Template Map also makes it easier to determine whether the current page is within
a site ‘section’ which is defined as a top level Page with a unique Page Template
that has any number of child Pages and/or Custom Post Types within it. This is very
useful when trying to set a ‘current’ state in your navigation, for example:

    ```
    <nav>
      <ul>
        <li class="<?php if( TemplateMap()->maybe_in_section( 'template-about.php' ) ) : ?> current<?php endif; ?>">
          <?php $about_page_id = TemplateMap()->get_id_from_template( 'template-about.php' ); ?>
          <a href="<?php echo get_permalink( $about_page_id ); ?>">About</a>
        </li>
      </ul>
    </nav>
    ```

Based on the same principle you can use this utility method to properly orient yourself
when outputting conditional classes contingent on the current page being within 
a ‘secton’ on your site.

## 安裝方式

 1. Upload `templatemap` to the `/wp-content/plugins/` directory
 2. Activate the plugin through the ‘Plugins’ menu in WordPress
 3. Replace calls to `get_permalink( 83 )` with `get_permalink( TemplateMap()->get_id_from_template('
    template-about.php' ) )` where `template-about.php` is the Page you wish to link

## 常見問題集

### How do I define Custom Post Types within a section?

There’s a filter for that. `template_map_post_types` accepts two parameters, the
second of which is the Page Template filename in question. You can conditionally
return an array of CPT names that will be utilized when checking to see whether 
the current page is within the section in question.

## 使用者評論

這個外掛目前沒有任何使用者評論。

## 參與者及開發者

以下人員參與了開源軟體〈Template Map〉的開發相關工作。

參與者

 *   [ Jon Christopher ](https://profiles.wordpress.org/jchristopher/)

[將〈Template Map〉外掛本地化為台灣繁體中文版](https://translate.wordpress.org/projects/wp-plugins/template-map)

### 對開發相關資訊感興趣？

任何人均可[瀏覽程式碼](https://plugins.trac.wordpress.org/browser/template-map/)、
查看 [SVN 存放庫](https://plugins.svn.wordpress.org/template-map/)，或透過 [RSS](https://plugins.trac.wordpress.org/log/template-map/?limit=100&mode=stop_on_copy&format=rss)
訂閱[開發記錄](https://plugins.trac.wordpress.org/log/template-map/)。

## 變更記錄

#### 1.0.1

 * When using maybe_in_section you can pass a 2nd parameter to force a parent ID

#### 1.0

 * Initial release

## 中繼資料

 *  版本 **1.0.1**
 *  最後更新 **4 年前**
 *  啟用安裝數 **10+**
 *  WordPress 版本需求 ** 3.9 或更新版本 **
 *  已測試相容的 WordPress 版本 **5.9.0**
 *  語言
 * [English (US)](https://wordpress.org/plugins/template-map/)
 * 標籤:
 * [link](https://tw.wordpress.org/plugins/tags/link/)[template](https://tw.wordpress.org/plugins/tags/template/)
 *  [進階檢視](https://tw.wordpress.org/plugins/template-map/advanced/)

## 評分

這個項目尚無任何評論記錄。

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

[查看全部使用者評論](https://wordpress.org/support/plugin/template-map/reviews/)

## 參與者

 *   [ Jon Christopher ](https://profiles.wordpress.org/jchristopher/)

## 技術支援

使用者可在技術支援論壇提出意見反應或使用問題。

 [檢視技術支援論壇](https://wordpress.org/support/plugin/template-map/)

## 贊助

想要支援這個外掛的發展嗎？

 [ 贊助這個外掛 ](http://mondaybynoon.com/donate/)