web-dev-qa-db-fra.com

Les archives de type publication personnalisées et les fichiers single.php ne fonctionnent pas

Bonjour, j'ai créé un type de message personnalisé appelé shows.

voici le code pour cela.

<?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'));
}
?>

J'ai créé 2 fichiers qui suivent en conséquence la hiérarchie wordpress et les ai appelés archive-shows.php et single-shows.php. Ceux-ci devraient automatiquement créer un lien vers les pages correctes, mais pour une raison quelconque, ils reviennent tous deux par défaut à index.php.

Les single.php et archive.php normaux fonctionnent normalement.

Les correctifs testés Permaliens Flushed a archive = true

s'il vous plaît des suggestions.

1
Dannyw24

Vous devez vider vos permaliens après avoir enregistré ces choses. Il existe des moyens de le faire automatiquement, mais le moyen le plus simple et le plus rapide est de rechercher wp-admin->Settings->Permalinks et de cliquer sur "Enregistrer les modifications". Cela fonctionnera bien s'il s'agit de votre site et que vous ne distribuez pas de plugin. S'il s'agit d'un plugin (ce qui devrait être le cas), vous pouvez exécuter flush_rewrite_rules(); sur le hook d'activation du plugin. Un exemple de faire cela du Codex:

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' );

Autre que cela, je n'ai eu aucun problème avec votre code (copié non modifié). Le CPT inscrit et single-shows.php et archive-shows.php fonctionnent après avoir vidé les permaliens.

3
s_ha_dum