J'ai un type de message personnalisé appelé slide
. Il a un contenu et des champs personnalisés. Je souhaite queWPaffiche le thème single.php
ou le thème single-slide.php
lorsque l'utilisateur clique sur le lien d'une page. le problème que j'ai est queWPlève l'erreur 404, quand je veux voir la page de diapositive simple.
voici mon code dans functions.php
:
function create_slide_post_type() {
$labels = array(
'name' => _x( 'اسلایدها', 'i2sa' ),
'singular_name' => _x( 'اسلاید', 'i2sa' ),
'menu_name' => _x( 'اسلایدها', 'i2sa' ),
'name_admin_bar' => _x( 'اسلاید', 'i2sa' ),
'add_new' => _x( 'افزودن', 'i2sa' ),
'add_new_item' => __( 'افزودن اسلاید جدید', 'i2sa' ),
'new_item' => __( 'اسلاید جدید', 'i2sa' ),
'edit_item' => __( 'ویرایش اسلاید', 'i2sa' ),
'view_item' => __( 'نمایش اسلاید', 'i2sa' ),
'all_items' => __( 'همه اسلایدها', 'i2sa' ),
'search_items' => __( 'جستجوی اسلایدها', 'i2sa' ),
'parent_item_colon' => __( 'اسلایدهای مادر:', 'i2sa' ),
'not_found' => __( 'اسلایدی پیدا نشد.', 'i2sa' ),
'not_found_in_trash' => __( 'اسلایدی در زباله دان پیدا نشد.', 'i2sa' )
);
$args = array(
'labels' => $labels,
'description' => "اسلایدهای شرکت i2sa",
'public' => true,
'exclude_from_search'=> true,
'publicly_queryable' => false,
'show_in_nav_menus' => false,
'menu_icon' => 'dashicons-images-alt2',
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'slide' ),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => null,
'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt' ),
);
register_post_type( 'slide', $args );
flush_rewrite_rules();
}
add_action( 'init', 'create_slide_post_type' );
Vous devez définir votre argument publicly_queryable
sur true
lors de l'enregistrement de votre type de publication personnalisé.
PRENEZ NOTE : Ajoutez flush_rewrite_rules()
, actualisez la page une ou deux fois et ENLEVEZ-LA IMMÉDIATEMENT. Vous NE DEVRIEZ PAS garder flush_rewrite_rules()
sauf si vous vous conformez aux dispositions du codex.
c'est une opération coûteuse, il ne devrait donc être utilisé qu'en cas d'absolue nécessité
Videz la règle de réécriture du tableau de bord -> Paramètres -> Lien permanent. Cliquez sur le bouton Enregistrer, puis vérifiez la page de détails de votre diapositive. Cela fonctionnera maintenant. Sinon, vous pouvez écrire ce code flush_rewrite_rules()
dans votre fonction create_slide_post_type()
. Voir le Codex
Actualisez vos permaliens. Allez à Admin-> Paramètres-> Permaliens et cliquez sur Enregistrer. Il rafraîchit vos permaliens et devrait vous aider, surtout si vous changez rewrite ('rewrite' => array ('slug' => 'slide'),)