0

カスタム投稿タイプを作成する方法を知っています。コーデックスを見ると、ページのように動作するカスタム投稿タイプ、具体的にはテンプレートチューザーポップアップとカテゴリ/タグピッカーを使用してテンプレートを割り当てる機能を作成できるはずです。

これまでのところ、私が入手できるのは基本的なエディターだけで、注目の画像セレクターを入手できます。しかし、私が探しているのは、基本的に、カスタム投稿タイプとして扱うことができるページです。

編集:私はそれが明白だと思いました、しかし私はfunctions.phpでそれをしていました:

register_post_type( hh_town,
array(
    'labels' => array(
        'name' => __( 'Towns' ),
        'singular_name' => __( 'Town' ),
        'add_new' => _x('Add Town', 'towns'),
              'add_new_item' => __('Add Town'),
              'edit' => _x('Edit Towns', 'Towns'),
              'edit_item' => __('Edit Town'),
              'new_item' => __('New Town'),
              'view' => _x('View Town', 'towns'),
              'view_item' => __('View Town')
    ),
    'public' => true,
    'has_archive' => true,
    'hierarchical' => true,
    'show_ui' => true,
    'supports' => array('title','editor','page-attributes','thumbnail', 'custom-fields'),
    'capability_type' => 'page',
    'taxonomies' => array('post_tag','category')
)
);
4

2 に答える 2

1

このコードをfunctions.phpに追加するだけです

add_action( 'add_meta_boxes', 'add_custom_page_attributes_meta_box' );
function add_custom_page_attributes_meta_box(){
global $post;
    if ( 'page' != $post->post_type && post_type_supports($post->post_type, 'page-attributes') ) {
        add_meta_box( 'custompageparentdiv', __('Template'), 'custom_page_attributes_meta_box', NULL, 'side', 'core');
    }
}

function custom_page_attributes_meta_box($post) {
    $template = get_post_meta( $post->ID, '_wp_page_template', 1 ); ?>
    <select name="page_template" id="page_template">
        <?php $default_title = apply_filters( 'default_page_template_title',  __( 'Default Template' ), 'meta-box' ); ?>
        <option value="default"><?php echo esc_html( $default_title ); ?></option>
        <?php page_template_dropdown($template); ?>
    </select><?php
}

add_action( 'save_post', 'save_custom_page_attributes_meta_box' );
function save_custom_page_attributes_meta_box( $post_id ) {
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
    if ( isset( $_POST['post_type'] ) && 'page' == $_POST['post_type'] ) return;
    if ( ! current_user_can( 'edit_post', $post_id ) ) return;
    if ( ! empty( $_POST['page_template'] ) && get_post_type( $post_id ) != 'page' ) {
        update_post_meta( $post_id, '_wp_page_template', $_POST['page_template'] );
    }
}
于 2015-07-03T07:03:51.847 に答える
1

古いスレッドですが、誰かがこれに遭遇した場合に備えて、実際にはカスタムメタボックスはもう必要ありません。のようなテンプレートを作成し、 template-my-template.phpこれを上部に追加する場合

<?php
/*
Template Name: My Template
Template Post Type: project, report, event
*/

Template Post Type次に、ページ属性()もサポートするリストされているカスタム投稿タイプadd_post_type_support( 'my_post_type', ['page-attributes'] );を使用すると、テンプレートを選択できます。

于 2020-10-06T11:29:34.090 に答える