テンプレートを カスタムページタイプ に適用できると思いました。
この方法でカスタム投稿タイプにテンプレートを適用することはできません。投稿タイプが 'page'の場合にのみ表示されます
私のコード:
function keyword_pages_init() {
$args = array(
'label' => 'Keywords',
'public' => true,
'show_ui' => true,
'capability_type' => 'page',
'hierarchical' => false,
'rewrite' => array('slug' => 'keywords'),
'query_var' => true,
'menu_icon' => 'dashicons-admin-page',
'supports' => array(
'title',
'editor',
'excerpt',
'trackbacks',
'custom-fields',
'comments',
'revisions',
'thumbnail',
'author',
'page-attributes',
)
);
register_post_type( 'keywords', $args );
}
add_action( 'init', 'keyword_pages_init' );
しかし、このカスタムページタイプの下に新しいページを追加しようとすると、template
がpage attributes
の下にまったく表示されません。
何か案は?
新しい 4.7に含まれる投稿タイプテンプレート機能 を参照していますか?
ページテンプレート を 'キーワード' cptで利用できるようにするには、カスタムページテンプレートにこのようなヘッダを追加します。
/**
* Template Name: Template Name
* Template Post Type: post, page, keywords
*/
このテンプレートはすべての投稿、ページ、そしてあなたのキーワードに利用可能です。これはフルページテンプレートの例です。
<?php
/**
* ACF Flexible Content template
*
* Learn more: https://codex.wordpress.org/Template_Hierarchy
*
* @package YM
* @since 1.0
* @version 1.0
*/
/**
* Template Name: Flexible Content
* Template Post Type: post, page, product, event
*/
/**
* Add landing page body class to the head
*
* @param $classes
* @return array
*/
add_filter( 'body_class', function ( $classes ) {
$classes[] = 'flexible-content-template';
return $classes;
} );
/**
* Remove entry header
*/
remove_action( 'genesis_entry_header', 'genesis_do_post_title' );
/**
* Force full width layout
*/
add_filter( 'genesis_pre_get_option_site_layout', '__genesis_return_full_width_content' );
/**
* Remove breadcrumbs
*/
remove_action( 'genesis_before_loop', 'genesis_do_breadcrumbs' );
/**
* Add ACF Flexible Content. See inc/layout.php
*
* @uses ym_flexible_content();
*/
remove_action( 'genesis_loop', 'genesis_do_loop' );
add_action( 'genesis_after_header', 'ym_flexible_content' );
genesis();
https://make.wordpress.org/core/2016/11/03/post-type-templates-in-4-7/