web-dev-qa-db-ja.com

カスタム投稿タイプのアーカイブとsingle.phpファイルが機能しない

こんにちは私は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.phpsingle-shows.phpと呼びました。これらは自動的に正しいページにリンクするはずですが、何らかの理由でどちらもデフォルトのindex.phpに戻ります。

通常のsingle.phparchive.phpは通常通り動作します。

修正済みのパーマリンクがフラッシュされましたarchive = true

何かご意見をお寄せください。

1
Dannyw24

これらを登録した後は、パーマリンクをフラッシュする必要があります。自動的にそれをする方法がありますが、迅速で汚い方法は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.phparchive-shows.phpの両方がパーマリンクをフラッシュした後に機能しました。

3
s_ha_dum