こんにちは私はshowsと呼ばれるカスタム投稿タイプを作成しました。
これがそのコードです。
<?php
add_action('init', 'show_register');
function show_register() {
//arguments to create the post type.
$args = array(
'label' => __('shows'),
'singular_label' => __('Show'),
'public' => true,
'show_ui' => true,
'capability_type' => 'post',
'hierarchical' => true,
'has_archive' => true,
'supports' => array('title', 'editor', 'thumbnail', 'custom-fields'),
'rewrite' => array('slug' => 'shows', 'with_front'
=> false), );
//Register type and custom taxonomy for type.
register_post_type( 'shows' , $args );
register_taxonomy("Show-type", array("shows"),
array("hierarchical" => true, "label" => "Show
Types", "singular_label" => "Show Type", "rewrite"
=> true, "slug" => 'show-type'));
}
?>
私はワードプレスの階層に従って2つのファイルを作成し、それらをarchive-shows.php
とsingle-shows.php
と呼びました。これらは自動的に正しいページにリンクするはずですが、何らかの理由でどちらもデフォルトのindex.phpに戻ります。
通常のsingle.php
とarchive.php
は通常通り動作します。
修正済みのパーマリンクがフラッシュされましたarchive = true
何かご意見をお寄せください。
これらを登録した後は、パーマリンクをフラッシュする必要があります。自動的にそれをする方法がありますが、迅速で汚い方法はwp-admin->Settings->Permalinks
を参照して「Save Changes」をクリックすることです。これがあなたのサイトで、あなたがプラグインを配布していないのであれば、うまくいきます。これがプラグインの場合(おそらくそうなるはずです)、プラグインのアクティベーションフックで flush_rewrite_rules();
を実行できます。コーデックスからそれを行う例:
function myplugin_activate() {
// register taxonomies/post types here
flush_rewrite_rules();
}
register_activation_hook( __FILE__, 'myplugin_activate' );
function myplugin_deactivate() {
flush_rewrite_rules();
}
register_deactivation_hook( __FILE__, 'myplugin_deactivate' );
それ以外は、私はあなたのコードに何の問題もありませんでした(変更なしにコピー)。 CPTが登録され、single-shows.php
とarchive-shows.php
の両方がパーマリンクをフラッシュした後に機能しました。