A página única do tipo de postagem personalizada retorna erro 404

11

Eu tenho um tipo de post personalizado chamado slide . Tem conteúdo e alguns campos personalizados. Eu quero que o WP mostre o tema single.php ou single-slide.php quando o usuário clica no link da página única do slide. o problema que tenho é que WP gera erro 404, quando eu quero ver a página de um único slide.

aqui está o meu código em 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' );
    
por Ramin 06.08.2014 / 14:02

3 respostas

28

Você deve definir seu argumento publicly_queryable como true ao registrar seu tipo de postagem personalizado.

OBSERVE : Adicione flush_rewrite_rules() , atualize a página uma ou duas vezes e REMOVA IMEDIATAMENTE. Você NÃO DEVE manter flush_rewrite_rules() a menos que sob as provisões como no códice.

  

esta é uma operação cara, por isso só deve ser usada quando for absolutamente necessário

    
por Pieter Goosen 06.08.2014 / 15:20
8

Liberar a regra de reescrita no painel de controle - > Configurações- > Página Permalink. Clique no botão Salvar e verifique a página de detalhes do slide. Vai funcionar agora. Caso contrário, você pode escrever este código flush_rewrite_rules() na sua função create_slide_post_type() . Veja o Codex

    
por Chinmoy Kumar Paul 06.08.2014 / 14:33
4

Atualize seus permalinks. Vá para Admin-> Configurações- > Permalinks e clique em Salvar. Ele atualiza seus permalinks e deve ajudar, especialmente se você estiver alterando reescrever ('reescrever' = > array ('slug' = > 'slide'),)

    
por Ales 29.03.2017 / 14:00