WordPress пользовательский тип post архив-.PHP не работает

новое в WordPress, я пытался создать страницу архива для пользовательского типа сообщения, и когда я нажимаю ссылку на localhost/websitename/wordpress/archive-event.php Я получаю 404. Вот мой код для регистрации типа post:

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 );

}

я пыталась rewrite => true, has_archive => true, промывка правил перезаписи и даже регистрация таксономии для типа post. single-event.php работает нормально. Что теперь?

3 ответов


хорошо, у меня была аналогичная проблема с вашей, и теперь я верю, что решил ее.

Я не уверен, что мой код будет отражать именно то, что вам нужно сделать, но его достаточно легко адаптировать. Примечание переписать правила для URL в архиве.

функции.в 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,    
        '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' );

add_action('init', 'event_archive_rewrite');

function event_archive_rewrite(){
   add_rewrite_rule('^events/([0-9]{4})/([0-9]{2})/?','index.php?post_type=event&year=$matches[1]&monthnum=$matches[2]','top');
   add_rewrite_rule('^events/([0-9]{4})/?','index.php?post_type=event&year=$matches[1]','top');
}

теперь это позволяет мне получить доступ к событиям так:

example.com/events/2013/07/01

Не забудьте иметь правильный шаблон архива на месте, например

archive-event.php

кроме того, если вы просто регистрируете свой тип сообщения, вам нужно будет очистить кэш permalink. Сделайте это, зайдя в WordPress admin и снова "сохранив" структуру permalink.

действительно надеюсь, что это поможет кому-то!

спасибо, Мики.


Не уверен, что это ответит на ваш вопрос, но вы сбросили структуру permalink?

Если вы только что добавили пользовательский тип сообщения, вам нужно будет перейти на страницу Permalinks и нажать Save.

надеюсь, что это поможет!


похоже,что в вашем примере URL вы пытаетесь добраться до фактического имени файла шаблона.

но если вы определили slug как event вы должны иметь возможность просто посетить localhost/websitename/wordpress / event