Saya membuat jenis posting kustom dengan nama mesin special_media_post dan wordpress sama sekali tidak melihat single-special_media_post.php. Saya benar-benar kehilangan. Itu tetap default ke index.php
Ini kode saya untuk jenis posting kustom saya dan taksonomi-nya:
//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 );
Jika ada hal lain yang perlu Anda lihat, saya dapat memasangnya, tetapi bahkan tidak melihatnya jika saya memasang gema 'Hello World' di sana. Jadi tidak melihat single-special_media_post.php atau arsip-special_media_post.php
Ubah kodenya
Dari:
Kepada:
Dan kemudian pergi ke halaman permalink, ubah ke default dan kembali ke "permalink cantik" Anda
% postname% /
Sekarang ini seharusnya bekerja.
Alasan mengapa itu tidak pergi ke halaman single- {custom_post_type} .php adalah karena has_archive. Ketika has_archive disetel pada true, has_archive akan mencari arsip- {custom_post_type} .php alih-alih satu halaman.
Semoga ini berhasil.
sumber
Ini praktik yang baik juga menggunakan
register_activation_hook()
danregister_deactivation_hook()
ketika membuat jenis konten baru.Tampaknya tipe konten baru yang segar akan selalu gagal ditulis ulang. Untuk menghindari hal ini, masukkan call_ register_activation_hook ()
flush_rewrite_rules()
dan fungsi konten baru pendaftaran Anda. Saya tidak tahu mengapa, tetapi melakukan ini tampaknya menghindari masalah ini. Lihat:sumber
Saya menyalin kode Anda, menghapus aturan penulisan ulang melalui Admin dan sekarang Tema menggunakan templat yang tepat ketika saya mengunjungi Media Post.
Anda harus menyiram aturan penulisan ulang sekali menggunakan kait after_switch_theme. Ini akan memastikan bahwa aturan penulisan ulang dihapus secara otomatis setelah pengguna mengaktifkan Tema.
Anda dapat menggunakan kode ini (langsung dari Codex):
Silakan berkonsultasi dengan WordPress Codex untuk informasi lebih lanjut: http://codex.wordpress.org/Function_Reference/register_post_type
EDIT: Dalam kasus seperti itu, Plugin Inspect Rewrite Rules sangat berguna, karena memungkinkan Anda untuk melihat aturan yang terhubung ke jenis posting kustom Anda: http://wordpress.org/extend/plugins/rewrite-rules-inspector/
Pada sidenote, harap perhatikan juga bahwa tempat yang disarankan untuk meletakkan Jenis Posting Khusus adalah Plugin, bukan Tema.
sumber