Archivo de tipo de publicación personalizado de WordPress-.php no funciona

5 minutos de lectura

avatar de usuario
ryan mcgarvey

Nuevo en WordPress, he estado tratando de crear una página de archivo para un tipo de publicación personalizada, y cuando hago clic en el enlace para localhost/websitename/wordpress/archive-event.php Obtuve un 404. Aquí está mi código para registrar el tipo de publicación:

add_action('init', 'event_register');

function event_register() {

    $labels = array(
        'name' => _x('Events', 'post type general name'),
        'singular_name' => _x('Event', 'post type singular name'),
        'add_new' => _x('Add New', 'event'),
        'add_new_item' => __('Add New Event'),
        'edit_item' => __('Edit Event'),
        'new_item' => __('New Event'),
        'view_item' => __('View Event'),
        'search_items' => __('Search Events'),
        'not_found' =>  __('Nothing found'),
        'not_found_in_trash' => __('Nothing found in Trash'),
        'parent_item_colon' => ''
    );

    $args = array(
        'labels' => $labels,
        'public' => true,
        'publicly_queryable' => true,
        'show_ui' => true,
        'query_var' => true,
        'rewrite' => array('slug' => 'event'),
        'has_archive' => 'event',
        'capability_type' => 'post',
        'hierarchical' => false,
        'menu_position' => null,
        'supports' => array('title','editor','thumbnail'),
    ); 

    register_post_type( 'event' , $args );

}

he intentado tener rewrite => true, has_archive => trueeliminando las reglas de reescritura e incluso registrando una taxonomía para el tipo de publicación. single-event.php funciona bien. ¿Ahora que?

  • ¿Utiliza algún marco temático específico? Algunos marcos temáticos reescriben un poco la jerarquía habitual. Por ejemplo Raíces

    – Lenin

    6 de junio de 2013 a las 18:41


  • intente guardar los enlaces permanentes nuevamente en el panel de administración de wp

    – M. Khalid Junaid

    6 de junio de 2013 a las 19:23

  • Hecho. Todavía no funciona. Siento que tiene que haber algo básico que estoy haciendo mal. ¿Tengo que crear taxonomías o categorías para que esto funcione? He creado una página archive-event.php guardando el archivo archive.php y no he realizado ningún cambio. Supongo que pensé que funcionaría de la misma manera que el archivo single-event.php, ¿está mal?

    –Ryan McGarvey

    10 de junio de 2013 a las 16:18


avatar de usuario
Michael Giovanni Pumo

Solo se requieren dos cosas para la página de archivo de tipo de publicación personalizada.

1) has_archive debiera ser true

2) Debe vaciar la memoria caché del enlace permanente una vez después de la actualización del código.

funciones.php

function my_custom_posts() {

    $labels = array(

        'name'               => _x( 'Events', 'post type general name' ),
        'singular_name'      => _x( 'Event', 'post type singular name' ),
        'add_new'            => _x( 'Add New', 'event' ),
        'add_new_item'       => __( 'Add New Event' ),
        'edit_item'          => __( 'Edit Event' ),
        'new_item'           => __( 'New Event' ),
        'all_items'          => __( 'All Events' ),
        'view_item'          => __( 'View Event' ),
        'search_items'       => __( 'Search Events' ),
        'not_found'          => __( 'No events found' ),
        'not_found_in_trash' => __( 'No events found in the Trash' ), 
        'parent_item_colon'  => '',
        'menu_name'          => 'Events'

    );

    $args = array(

        'labels'        => $labels,
        'description'   => 'Holds our events and event specific data',
        'public'        => true,
        'menu_position' => 5,
        'supports'      => array( 'title' ),
        'has_archive'   => true, // only this is required to enable archive page else 404 error will occur
        'publicly_queryable' => true,
        'show_ui' => true,
        'query_var' => true,
        'rewrite' => array('slug' => 'events', 'with_front' => true),
        'capability_type' => 'post',
        'hierarchical' => false,

    );

    register_post_type( 'event', $args );   
    //flush_rewrite_rules();

}

add_action( 'init', 'my_custom_posts' );

Defecto archive.php funcionará, pero si desea sobrescribir uno predeterminado, debe usar una plantilla de archivo adecuada archive-<custom_post_slug>.phpp.ej

archive-events.php

Además, si solo está registrando su tipo de publicación, deberá vaciar el caché de enlace permanente. Haga esto cambiando la estructura de enlaces permanentes en el administrador de WordPress.

Ahora puede acceder a la página de archivo https://dominio/post_slug/

Nota: si tu escoges Numeric en la estructura de enlace permanente url sería https://dominio/archivos/post_slug/

No estoy seguro de que esto responda a su pregunta, pero ¿restableció su estructura de enlaces permanentes?

Si acaba de agregar un tipo de publicación personalizada, deberá ir a la página de Enlaces permanentes y presionar Guardar.

¡Espero que ayude!

Parece que en su ejemplo de URL está intentando llegar al nombre del archivo de plantilla real.

Pero si ha definido que la babosa sea event deberías poder simplemente visitar localhost/websitename/wordpress/event

  • Me temo que esa url tampoco funciona. También intenté dejar el slug como predeterminado y configurar rewrite => true, lo que tampoco ayuda.

    –Ryan McGarvey

    06/06/2013 a las 18:30

  • @ user2280983 ¿Alguna vez encontró una solución para esto? ¡Tengo el mismo problema que tú!

    –Michael Giovanni Pumo

    10 de julio de 2013 a las 12:08

  • @Michael Giovanni Pumo No realmente, terminé dirigiendo mis enlaces de archivo a “localhost/nombre del sitio/wordpress/?post_type=evento“. No es muy bonito, pero parece funcionar si todo lo que quieres hacer es mostrar una lista de un determinado tipo de publicación.

    –Ryan McGarvey

    16 de julio de 2013 a las 19:34


  • @ user2280983 He enviado una nueva respuesta a esta pregunta basada en mi hallazgo desde entonces. ¡Parece que funciona bien para mí! Eche un vistazo y si ayuda a responder a su pregunta, eso sería genial. ¡Buena suerte!

    –Michael Giovanni Pumo

    17 de julio de 2013 a las 9:17

yo estaba usando Interfaz de usuario de CPT complemento donde el indicador “Tiene archivo” se estableció en Falso de forma predeterminada. Puedes cambiar esto en:

"Edit Post Type" tab > "Settings" > "Has Archive"

configúrelo en Verdadero, en su lugar, y no olvide eliminar los enlaces permanentes (haga clic en Guardar en la página de enlaces permanentes).

Hay un problema en estructura de enlaces permanentes. He cambiado la configuración => mi enlace permanente a “Día y nombre” o “Mes y nombre” o “Nombre de la publicación” que ha solucionado mi problema.

¿Ha sido útil esta solución?