La página individual de tipo de entrada personalizada devuelve error 404

6 ago 2014, 15:02:01
Vistas: 57.7K
Votos: 28

Tengo un tipo de entrada personalizada llamado slide. Tiene contenido y algunos campos personalizados. Quiero que WP muestre la plantilla single.php o single-slide.php cuando el usuario hace clic en el enlace de la página individual del slide. El problema que tengo es que WP arroja un error 404 cuando quiero ver la página individual del slide.

Aquí está mi código en functions.php:

function create_slide_post_type() {
    $labels = array(
        'name'               => _x( 'Slides', 'i2sa' ),
        'singular_name'      => _x( 'Slide', 'i2sa' ),
        'menu_name'          => _x( 'Slides', 'i2sa' ),
        'name_admin_bar'     => _x( 'Slide', 'i2sa' ),
        'add_new'            => _x( 'Añadir', 'i2sa' ),
        'add_new_item'       => __( 'Añadir nuevo slide', 'i2sa' ),
        'new_item'           => __( 'Nuevo slide', 'i2sa' ),
        'edit_item'          => __( 'Editar slide', 'i2sa' ),
        'view_item'          => __( 'Ver slide', 'i2sa' ),
        'all_items'          => __( 'Todos los slides', 'i2sa' ),
        'search_items'       => __( 'Buscar slides', 'i2sa' ),
        'parent_item_colon'  => __( 'Slides padres:', 'i2sa' ),
        'not_found'          => __( 'No se encontraron slides.', 'i2sa' ),
        'not_found_in_trash' => __( 'No se encontraron slides en la papelera.', 'i2sa' )
    );

    $args = array(
        'labels'             => $labels,
        'description'        => "Slides de la empresa 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' );
0
Todas las respuestas a la pregunta 4
5
60

Debes configurar el argumento publicly_queryable como true al registrar tu tipo de contenido personalizado.

IMPORTANTE: Añade flush_rewrite_rules(), actualiza la página una o dos veces y ELIMÍNALO INMEDIATAMENTE. NO DEBES mantener flush_rewrite_rules() a menos que sea bajo las provisiones indicadas en el codex.

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

6 ago 2014 16:20:46
Comentarios

¡Oh wow, eso también funcionó aquí! Eso no era nada obvio. ¡Gracias!

Toby Deshane Toby Deshane
28 ene 2019 21:02:46

¡Funcionó para mí! ¡Gracias!

JamesHoux JamesHoux
10 jun 2019 21:58:55

¡Sí! Finalmente, después de hacer ambos, funcionó.

Eric Eric
24 jul 2019 16:42:51

flush_rewrite_rules() fue la solución para mí - ¡buen trabajo!

Cush Cush
2 nov 2020 17:13:55

Puedes simplemente ir a Ajustes > Enlaces permanentes y hacer clic en guardar sin cambiar nada. Si no quieres editar tu código y buscas una solución rápida 'con suerte'

BonisTech BonisTech
2 dic 2020 12:11:18
3
25

Vacía las reglas de reescritura desde el panel de control -> Ajustes -> Página de enlaces permanentes. Haz clic en el botón de guardar y luego verifica tu página de detalles del slide. Ahora debería funcionar. De lo contrario, puedes escribir este código flush_rewrite_rules() en tu función create_slide_post_type(). Consulta el Codex

6 ago 2014 15:33:28
Comentarios

Hacer clic en el botón de guardar en Permalinks funcionó para mí. Después de mover el sitio a un servidor de producción, todos los enlaces de tipos de contenido personalizados dejaban de funcionar. Esto lo solucionó. ¡Gracias!

cbloss793 cbloss793
11 oct 2017 20:29:02

+1 Simplemente hacer clic en guardar en Permalinks también funcionó para mí.

Kalnode Kalnode
12 ago 2018 03:52:19

Guardar los permalinks funciona. Pero por favor no añadas flush_rewrite_rules() después de las llamadas a register_post_type() en código de producción (es decir, dentro de create_slide_post_type). Usa el hook de activación del plugin o un valor de opción para determinar que añadiste un nuevo tipo de contenido

Philipp Philipp
14 jun 2019 10:31:17
1
11

Actualiza tus enlaces permanentes. Ve a Administración->Ajustes->Enlaces permanentes y haz clic en Guardar. Esto refrescará tus enlaces permanentes y debería ayudar, especialmente si estás cambiando la reescritura ( 'rewrite' => array( 'slug' => 'slide' ),)

29 mar 2017 15:00:59
Comentarios

funcionó para mí - gracias

cljk cljk
27 abr 2020 12:48:15
1

Debes configurar lo siguiente en tu virtualhost de Apache:

    <Directory /var/www/html/wordpress>
            AllowOverride All
    </Directory>

Luego, actualiza tus enlaces permanentes: wp-admin->ajustes->enlaces permanentes. Esto funcionó para mí.

13 nov 2019 18:10:18
Comentarios

Gracias por publicar esta respuesta. Ahora al menos sé que el problema está en mi configuración de Apache y no en el código.

Sharpey Sharpey
14 nov 2021 00:33:17