La página individual de tipo de entrada personalizada devuelve error 404
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' );

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

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

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

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!

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

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
