web-dev-qa-db-ja.com

カスタムページタイプ - ページ属性のテンプレート

テンプレートを カスタムページタイプ に適用できると思いました。

この方法でカスタム投稿タイプにテンプレートを適用することはできません。投稿タイプが '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' );

しかし、このカスタムページタイプの下に新しいページを追加しようとすると、templatepage attributesの下にまったく表示されません。

何か案は?

1
laukok

新しい 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/

2
Joe Dooley