私は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 );
あなたが見る必要がある何か他にあるならば、私はそれを我慢することができます、しかし私がそこにエコー「ハローワールド」を入れるならばそれはそれさえ見えません。そのため、single-special_media_post.phpまたはarchive-special_media_post.phpのどちらも見ていません。
パーマリンクのページにアクセスし(これでフラッシュされます)、もう一度確認してください。あなたの階層への追加を認識するためには、おそらくWordPressに注意が必要です。
コードを変更する
から:
'has_archive' => true,
に:
'has_archive' => false,
そして、パーマリンクのページに行き、デフォルトに変更して、あなたの「かわいいパーマリンク」に戻ってください。
%postname%/
今ではうまくいくはずです。
単一の{custom_post_type} .phpページに移動しないのは、has_archiveが原因です。 has_archiveがtrueに設定されていると、単一ページの代わりにarchive- {custom_post_type} .phpを探します。
これがうまくいったことを願っています。
新しいコンテンツタイプを作成するときにも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();
}
私はあなたのコードをコピーし、管理者を通して書き換えルールをフラッシュしました、そして今メディア投稿を訪問するときテーマは正しいテンプレートを使用します。
After_switch_themeフックを使って書き換え規則 once をフラッシュする必要があります。これにより、ユーザーがテーマをアクティブにした後に書き換えルールが自動的にフラッシュされます。
あなたは(コーデックスから直接)このコードを使用することができます:
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コーデックスに相談してください: http://codex.wordpress.org/Function_Reference/register_post_type
編集:そのような場合、それはあなたがあなたのカスタム投稿タイプに関連するルールを見ることを可能にするので、Inspect Rewrite Rulesプラグインは非常に便利です。 http://wordpress.org/extend/plugins/rewrite-rules-検査官/
補足的に、カスタム投稿タイプを配置するための推奨場所はテーマではなくプラグインです。