Página única de tipo de publicación personalizada devuelve el error 404

11

Tengo un tipo de publicación personalizado llamado slide . Tiene contenido y algunos campos personalizados. Quiero que WP muestre el tema single.php o el tema single-slide.php cuando el usuario haga clic en el enlace de la página única. El problema que tengo es que WP produce un error 404 cuando quiero ver la página de una sola diapositiva.

aquí está mi código en 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' );
    
pregunta Ramin 06.08.2014 - 14:02

3 respuestas

28

Debes establecer tu argumento publicly_queryable en true al registrar tu tipo de publicación personalizada.

TOME NOTA : agregue flush_rewrite_rules() , actualice la página una o dos veces y ELIMINE ES INMEDIATAMENTE. NO DEBE mantener flush_rewrite_rules() a menos que esté bajo las disposiciones establecidas en el códice.

  

esta es una operación costosa, por lo que solo debe usarse cuando sea absolutamente necesario

    
respondido por el Pieter Goosen 06.08.2014 - 15:20
8

Vacíe la regla de reescritura del panel de control - > Configuración- > página de enlace permanente. Haga clic en el botón Guardar y luego verifique la página de detalles de su diapositiva. Funcionará ahora. De lo contrario, puede escribir este código flush_rewrite_rules() en su función create_slide_post_type() . Consulte el Codex

    
respondido por el Chinmoy Kumar Paul 06.08.2014 - 14:33
4

Actualice sus enlaces permanentes. Vaya a Admin- > Configuración- > Permalinks y presione Guardar. Actualiza sus enlaces permanentes y debería ayudar, especialmente si está cambiando la reescritura ('rewrite' = > array ('slug' = > 'slide'),)

    
respondido por el Ales 29.03.2017 - 14:00

Lea otras preguntas en las etiquetas