web-dev-qa-db-fra.com

Une page personnalisée de type publication personnalisée renvoie une erreur 404

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

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é

36
Pieter Goosen

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

11
Chinmoy Kumar Paul

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

5
Ales