
內容簡介
Post Type Archive Pages 可讓您選擇在內容頁結構中的頁面,作為自訂文章類型的存檔頁面。這讓您控制存檔頁面的永久網址,並允許它們被嵌套在其他頁面下面。它還為該文章類型的單篇文章和詞彙存檔設定了永久鏈結基底。
安裝並啟用外掛後,您可以在「設定 > 閱讀」下,為每個已註冊的文章類型選擇存檔頁面。
模板
WordPress 將搜尋您設定為存檔頁面的頁面的存檔頁面模板。因此,會使用 archive-$posttype.php 和 archive.php 模板檔案,而不是 page.php。
此外,外掛的主要實例會返回一些可在構建主題時有用的函數。
取得存檔頁面
返回所提供的文章類型別名的存檔頁面的頁面物件。如果從文章類型存檔模板、單數模板或詞彙存檔中調用並且未提供別名,則會使用相關的文章類型。
例如:
$page = post_type_archive_pages()->get_archive_page('book');
取得存檔頁面文章類型
返回提供的頁面 ID 是其存檔頁面的文章類型物件。
例如:
$postType = post_type_archive_pages()->get_archive_page_post_type(5);
選單改進
將存檔頁面加入選單時,當查看文章類型存檔時,它們將被標記為當前選單項目,而當檢視該文章類型的文章時,它們將被標記為當前選單項目的父級 / 祖先。相關的 CSS 類別也將應用。
Advanced Custom Fields 改進
當與 Advanced Custom Fields 搭配使用時,此外掛尤其有效。它註冊了其他頁面型別位置規則,允許您向所有存檔頁面或特定文章類型的存檔頁面添加欄位。因此,如果您的列表頁需要像描述或頁首圖像這樣的內容,您可以將這些欄位放置在存檔頁面本身上。
要在您的存檔模板中訪問這些欄位,您只需調用:
$desc = get_field( 'description', post_type_archive_pages()->get_archive_page() );
開發人員掛鉤
此外掛嘗試設置最適合大多數情況的預設值。但是,如果需要,在某些地方可以加入掛鉤並更改這些預設值。
過濾器 - post_type_archive_pages/supported_post_types
默認情況下,您可以為除了內置頁面和文章之外的任何其他公開文章類型設置存檔頁面。此掛鉤允許您過濾支援的文章類型的默認數組,以添加或刪除。該數組應包含有效文章類型的別名。請注意,數組鍵在使用時並不重要,但包含別名以便您輕鬆取消設置值。
例如:
add_filter( 'post_type_archive_pages/supported_post_types', function( $post_types ){
unset( $post_types['book'] );
return $post_types;
} );
過濾器 - post_type_archive_pages/taxonomy_post_type
默認情況下,如果該文章類型是該分類法所註冊的唯一文章類型,則分類法分類詞彙存檔將繼承文章類型的存檔頁面永久網址結構。例如,如果您有一個出版社分類法,則分類詞彙存檔的永久鏈接可能變為 /books/publisher/penguin。其中,/books 是存檔頁面的永久網址,publisher 是分類法別名,penguin 是詞彙別名。此掛鉤允許您更改此行為。
外掛標籤
開發者團隊
原文外掛簡介
Post Type Archive Pages allows you to select pages from within your content page structure to be the archive pages for your custom post types. This gives you control of the permalink for your archive pages and allows them to be nested under other pages. It also sets the permalink base for single posts of that post type and term archive for the post type’s taxonomies.
Once the plugin is installed and activated you’ll be able to select the archive page for each of your registered post types under Settings > Reading.
Templating
WordPress will look for archive page templates for the pages that you set as archive pages. So archive-$posttype.php and archive.php will be used rather than page.php.
There are also a few functions available that may be helpful in building themes. They are accessed on the plugin’s main instance, which is returned by a call to post_type_archive_pages().
get_archive_page
Returns the page object for the archive page of the provided post type slug. If called from a post type archive template, a singular template or a term archive and a slug isn’t provided, the relative post type will be used. e.g.
$page = post_type_archive_pages()->get_archive_page('book');
get_archive_page_post_type
Returns the post type object that the provided page ID is the archive page for. e.g.
$postType = post_type_archive_pages()->get_archive_page_post_type(5);
Menu – Enhancements
Archive pages added to the menu will be marked as the current menu item when viewing the post type archive and the current menu item’s parent / ancestor when viewing a post of that type. The related CSS classes will also be applied.
Advanced Custom Fields – Enhancements
This plugin is particularly effective when paired with Advanced Custom Fields. It registers additional page type location rules allowing you to add fields to all archive pages or the archive page for a particular post type. So if your listing page requires content like a description or header image you can place fields for those on the archive page itself.
To access fields like these in your archive template you need only call
$desc = get_field( 'description', post_type_archive_pages()->get_archive_page() );
Developer Hooks
The plugin attempts to set defaults that should work best for most scenarios. But there are some places to hook in and alter these defaults where needed.
Filter – post_type_archive_pages/supported_post_types
By default you will be able to set an archive page for any public post type other than the built in post types of page and post. This hook allows you to filter the default array of supported post types to add or remove. The array should contain slugs of valid post types. Please note that the array keys are not important in it’s use, but contain the slugs to allow you to easily unset values.
add_filter( 'post_type_archive_pages/supported_post_types', function( $post_types ){
unset( $post_types['book'] );
return $post_types;
} );
Filter – post_type_archive_pages/taxonomy_post_type
By default taxonomy term archives will inherit the archive page permalink structure of a post type if that post type is the only one that the taxonomy is registered on. For instance if you had a publisher taxonomy the permalink for a term archive might become /books/publisher/penguin. With /books being the permlaink of the archive page, publisher the taxonomy slug and penguin the term slug. This filter allows you to alter the post type who’s archive page permalink structure will be inherited for a given taxonomy.
add_filter( 'post_type_archive_pages/taxonomy_post_type', function( $post_type, $taxonomy ){
if ( $taxonomy === 'publisher' ) return null;
return $post_type;
}, 10, 2 );
