Le type de message personnalisé single- {personnalisé} .php ne fonctionne pas

12

J'ai créé un type d'article personnalisé avec le nom de machine special_media_post et wordpress ne voit tout simplement pas le single-special_media_post.php. Je suis à perdre complètement. Il continue à défaut à l'index.php

Voici mon code pour mon type de message personnalisé et ses taxonomies:

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

S'il y a quelque chose d'autre que vous devez voir, je peux le mettre en place, mais il ne le verra même pas si je mets un écho 'Hello World' dedans. Donc, il ne voit simplement ni single-special_media_post.php ni archive-special_media_post.php

    
posée BobbyDank 22.04.2013 - 21:30

4 réponses

47

Visitez la page permaliens (qui la videra) et vérifiez à nouveau. WordPress a probablement juste besoin d'être poussé pour reconnaître votre ajout à la hiérarchie.

    
réponse donnée vancoder 22.04.2013 - 22:53
4

Changer le code

De:

 'has_archive'         => true,

À:

 'has_archive'         => false,

Et ensuite allez à la page permalien, changez pour la valeur par défaut et revenez à votre "jolie permalien"

% postname% /

Maintenant, cela devrait fonctionner.

La raison pour laquelle il ne se rend pas dans la page single- {custom_post_type} .php est à cause de has_archive. Lorsque has_archive est défini sur true, il recherchera archive- {custom_post_type} .php au lieu de la page unique.

J'espère que cela a fonctionné.

    
réponse donnée Wesley Cheung 23.04.2013 - 15:06
1

C’est une bonne pratique que vous utilisiez également les register_activation_hook() et register_deactivation_hook() lors de la création de nouveaux types de contenu.

Il semble que les nouveaux types de contenu nouveaux ne seront toujours pas réécrits. Pour éviter cela, insérez dans le paramètre register_activation_hook () le flush_rewrite_rules() et votre fonction de nouveau contenu d'enregistrement. Je ne sais pas pourquoi, mais cela semble éviter ce problème. Regardez:

register_activation_hook( __FILE__, 'your_active_hook' );

function your_active_hook() {
    special_media_post();
    flush_rewrite_rules();
}
    
réponse donnée danilocgsilva 22.08.2017 - 13:36
0

J'ai copié votre code, vidé les règles de réécriture via l'administrateur et le thème utilise désormais les modèles appropriés lorsque je visite un média.

Vous devez vider les règles de réécriture une fois à l'aide du hook after_switch_theme. Cela garantira que les règles de réécriture seront automatiquement supprimées une fois que l'utilisateur aura activé le thème.

Vous pouvez utiliser ce code (directement du Codex):

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

Veuillez consulter le Codex WordPress pour plus d'informations: enlace

EDIT: Dans un tel cas, le plugin Inspect Rewrite Rules est très utile car il vous permet de voir les règles liées à votre type de message personnalisé: enlace

Sur une note de bas de page, veuillez également noter que l'emplacement recommandé pour les types de publication personnalisés est un plugin, pas un thème.

    
réponse donnée Fränk 23.04.2013 - 16:58

Lire d'autres questions sur les étiquettes