맞춤 게시물 유형 single- {custom} .php가 작동하지 않습니다


18

나는 기계 이름 special_media_post로 맞춤 게시물 유형을 만들었고 wordpress는 단순히 single-special_media_post.php를 보지 못합니다. 나는 완전히졌다. index.php를 기본값으로 유지합니다.

다음은 내 맞춤 게시물 유형 및 분류법에 대한 코드입니다.

//Post and Taxonomy stuff
//Register Custom Post Type
function special_media_post() {
$labels = array(
    'name'                => _x( 'Media Posts', 'Post Type General Name', 'text_domain' ),
    'singular_name'       => _x( 'Media Post', 'Post Type Singular Name', 'text_domain' ),
    'menu_name'           => __( 'Media Post', 'text_domain' ),
    'parent_item_colon'   => __( 'Media Post:', 'text_domain' ),
    'all_items'           => __( 'All Media Posts', 'text_domain' ),
    'view_item'           => __( 'View Media Post', 'text_domain' ),
    'add_new_item'        => __( 'Add New Media Post', 'text_domain' ),
    'add_new'             => __( 'New Media Post', 'text_domain' ),
    'edit_item'           => __( 'Edit Media Post', 'text_domain' ),
    'update_item'         => __( 'Update Media Post', 'text_domain' ),
    'search_items'        => __( 'Search Media Posts', 'text_domain' ),
    'not_found'           => __( 'No media posts found', 'text_domain' ),
    'not_found_in_trash'  => __( 'No media posts found in Trash', 'text_domain' ),
);

$rewrite = array(
    'slug'                => 'mediapost',
    'with_front'          => true,
    'pages'               => true,
    'feeds'               => true,
);

$args = array(
    'label'               => __( 'mediapost', 'text_domain' ),
    'description'         => __( 'Post Type for Media', 'text_domain' ),
    'labels'              => $labels,
    'supports'            => array( 'title', 'editor', 'custom-fields', ),
    'taxonomies'          => array( 'year', 'type' ),
    'hierarchical'        => false,
    'public'              => true,
    'show_ui'             => true,
    'show_in_menu'        => true,
    'show_in_nav_menus'   => true,
    'show_in_admin_bar'   => true,
    'menu_position'       => 5,
    'can_export'          => true,
    'has_archive'         => true,
    'exclude_from_search' => false,
    'publicly_queryable'  => true,
    'query_var'           => 'mediapost',
    'rewrite'             => $rewrite,
    'capability_type'     => 'page',
);

register_post_type( 'special_media_post', $args );
}

// Register Custom Taxonomy
function media_year()  {
$labels = array(
    'name'                       => _x( 'Years', 'Taxonomy General Name', 'text_domain' ),
    'singular_name'              => _x( 'Year', 'Taxonomy Singular Name', 'text_domain' ),
    'menu_name'                  => __( 'Year', 'text_domain' ),
    'all_items'                  => __( 'All Years', 'text_domain' ),
    'parent_item'                => __( 'Parent Year', 'text_domain' ),
    'parent_item_colon'          => __( 'Parent Year:', 'text_domain' ),
    'new_item_name'              => __( 'New Year Name', 'text_domain' ),
    'add_new_item'               => __( 'Add New Year', 'text_domain' ),
    'edit_item'                  => __( 'Edit Year', 'text_domain' ),
    'update_item'                => __( 'Update Year', 'text_domain' ),
    'separate_items_with_commas' => __( 'Separate years with commas', 'text_domain' ),
    'search_items'               => __( 'Search years', 'text_domain' ),
    'add_or_remove_items'        => __( 'Add or remove years', 'text_domain' ),
    'choose_from_most_used'      => __( 'Choose from the most used yearss', 'text_domain' ),
);

$rewrite = array(
    'slug'                       => 'year',
    'with_front'                 => true,
    'hierarchical'               => true,
);

$capabilities = array(
    'manage_terms'               => 'manage_categories',
    'edit_terms'                 => 'manage_categories',
    'delete_terms'               => 'manage_categories',
    'assign_terms'               => 'edit_posts',
);

$args = array(
    'labels'                     => $labels,
    'hierarchical'               => true,
    'public'                     => true,
    'show_ui'                    => true,
    'show_admin_column'          => true,
    'show_in_nav_menus'          => true,
    'show_tagcloud'              => true,
    'query_var'                  => 'year',
    'rewrite'                    => $rewrite,
    'capabilities'               => $capabilities,
);

register_taxonomy( 'year', 'special_media_post', $args );
}

// Register Custom Taxonomy
function media_type()  {
$labels = array(
    'name'                       => _x( 'Types', 'Taxonomy General Name', 'text_domain' ),
    'singular_name'              => _x( 'Type', 'Taxonomy Singular Name', 'text_domain' ),
    'menu_name'                  => __( 'Type', 'text_domain' ),
    'all_items'                  => __( 'All Types', 'text_domain' ),
    'parent_item'                => __( 'Parent Type', 'text_domain' ),
    'parent_item_colon'          => __( 'Parent Type:', 'text_domain' ),
    'new_item_name'              => __( 'New Type Name', 'text_domain' ),
    'add_new_item'               => __( 'Add New Type', 'text_domain' ),
    'edit_item'                  => __( 'Edit Type', 'text_domain' ),
    'update_item'                => __( 'Update Type', 'text_domain' ),
    'separate_items_with_commas' => __( 'Separate types with commas', 'text_domain' ),
    'search_items'               => __( 'Search types', 'text_domain' ),
    'add_or_remove_items'        => __( 'Add or remove types', 'text_domain' ),
    'choose_from_most_used'      => __( 'Choose from the most used types', 'text_domain' ),
);

$rewrite = array(
    'slug'                       => 'type',
    'with_front'                 => true,
    'hierarchical'               => true,
);

$capabilities = array(
    'manage_terms'               => 'manage_categories',
    'edit_terms'                 => 'manage_categories',
    'delete_terms'               => 'manage_categories',
    'assign_terms'               => 'edit_posts',
);

$args = array(
    'labels'                     => $labels,
    'hierarchical'               => true,
    'public'                     => true,
    'show_ui'                    => true,
    'show_admin_column'          => true,
    'show_in_nav_menus'          => true,
    'show_tagcloud'              => true,
    'query_var'                  => 'media_type',
    'rewrite'                    => $rewrite,
    'capabilities'               => $capabilities,
);

register_taxonomy( 'type', 'special_media_post', $args );
}

// Hook into the 'init' action
add_action( 'init', 'special_media_post', 0 );

// Hook into the 'init' action
add_action( 'init', 'media_year', 0 );

// Hook into the 'init' action
add_action( 'init', 'media_type', 0 );

당신이 볼 필요가있는 다른 것이 있다면, 나는 그것을 넣을 수는 있지만, 거기에 에코 'Hello World'를 넣으면 그것을 볼 수 없습니다. 따라서 single-special_media_post.php 또는 archive-special_media_post.php가 보이지 않습니다.

답변:


57

퍼머 링크 페이지를 방문하여 (플러시) 다시 확인하십시오. 계층 구조에 추가 한 내용을 인식하려면 워드 프레스를 조금만 움직여야합니다.


2
와! 매력처럼 작동, 1 시간 낭비 :(
Mohammed Sufian

5

코드 변경

보낸 사람 :

 'has_archive'         => true,

받는 사람 :

 'has_archive'         => false,

그런 다음 영구 링크 페이지로 이동하여 기본값으로 변경 한 후 "pretty 영구 링크"로 돌아갑니다.

% postname % /

이제 작동합니다.

single- {custom_post_type} .php 페이지로 이동하지 않는 이유는 has_archive 때문입니다. has_archive가 true로 설정되면 단일 페이지 대신 archive- {custom_post_type} .php를 찾습니다.

이것이 효과가 있기를 바랍니다.


1
나는 그것이 확실하지 않다. 단일 게시물보기는 게시물 유형이 아카이브 색인보기를 지원하는지 여부에 관계없이 단일 게시물보기입니다.
Chip Bennett

내가 게시 한이 솔루션은 내 자체 개발 테마에서 내 문제를 어떻게 해결했는지입니다. 내 단일 게시물 유형 페이지에 이제 내가보고 싶은 내용이 표시됩니다.
웨슬리 청

3
수정 사항이 퍼머 링크 구조를 재설정하여 다시 작성 규칙을 플러시 할 수 있습니다.
Chip Bennett

2
'has_archive'설정은 단일 요청에 단일 {post_type} .php 템플릿이 사용되는지 여부에 영향을 미치지 않습니다.
Jules

매력처럼 작동합니다. 고마워 친구!
user1202416

1

그것은 좋은 연습은 또한 사용의 register_activation_hook()register_deactivation_hook()새 콘텐츠 형식을 만들 때.

새로운 콘텐츠 유형은 항상 다시 쓰지 않는 것 같습니다. 이를 피하려면 register_activation_hook () 콜백 flush_rewrite_rules()및 등록 새 컨텐츠 함수를 넣으십시오. 왜 그런지 모르겠지만 이렇게하면이 문제를 피할 수 있습니다. 보기:

register_activation_hook( __FILE__, 'your_active_hook' );

function your_active_hook() {
    special_media_post();
    flush_rewrite_rules();
}

0

코드를 복사하고 관리자를 통해 다시 쓰기 규칙을 비웠으며 이제 미디어 게시물을 방문 할 때 테마에서 올바른 템플릿을 사용합니다.

당신은 재 작성 규칙을 세척 할 필요 하면 after_switch_theme 후크를 사용. 이렇게하면 사용자가 테마를 활성화 한 후 다시 쓰기 규칙이 자동으로 플러시됩니다.

이 코드를 사용할 수 있습니다 (Codex에서 직접) :

add_action( 'init', 'theme_prefix_cpt_init' );
function theme_prefix_cpt_init() {
    register_post_type( ... );
}

function theme_prefix_rewrite_flush() {
    flush_rewrite_rules();
}
add_action( 'after_switch_theme', 'theme_prefix_rewrite_flush' );

자세한 내용은 WordPress Codex를 참조하십시오. http://codex.wordpress.org/Function_Reference/register_post_type

편집 : 이러한 경우, Rewrite Rules 플러그인 검사는 사용자 정의 게시물 유형에 연결된 규칙을 볼 수 있기 때문에 매우 편리합니다. http://wordpress.org/extend/plugins/rewrite-rules-inspector/

또한 각주에서 사용자 정의 게시물 유형을 배치하기 위해 권장되는 장소는 테마가 아니라 플러그인이라는 점에 유의하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.