2013-03-22 2 views
1

Обычно я стараюсь найти ответы, поиск в Интернете или бесконечные эксперименты. На этот раз я действительно в отчаянии. Я прочитал много связанных вопросов, но ни у кого нет решения моей проблемы.Wordpress get_template_part не работает - возвращает 404 страницу вместо loop-xxx.php

Я использую 'get_template_part' во многих других темах, и это сработало хорошо. На этот раз я не знаю, что изменило ситуацию.

В моей теме есть зарегистрированный пользовательский почтовый тип event. URL-адрес сообщения в случае будет выглядеть так: example.com/event/wine-tasting.

Проблема: example.com/event/ возвращает страницу 404 вместо выстраиваться все сообщения о событиях (петля-event.php)

Вот мой archive.php:

<?php get_header(); ?> 
<?php if (have_posts()) the_post();?> 
<?php rewind_posts();?> 
<?php $post_type = get_post_type(); 
    get_template_part('loop', $post_type);?> 
<?php get_footer(); ?> 

Вот моя петля-event.php:

<?php get_header(); ?> 
<?php if (have_posts()) while (have_posts()) : the_post(); ?> 
    <div class="container"> 
     <?php the_title();?> 
     <?php the_content();?> 
    </div> 
<?php endwhile; ?> 

Это, как я зарегистрировать пользовательский тип записи 'событие':

function yd_create_post_type_event() 
{ 
$labels = array(
    'name' => __('Events','yd'), 
    'singular_name' => __('Event','yd'), 
    'add_new' => __('Add New','yd'), 
    'add_new_item' => __('Add New Event','yd'), 
    'edit_item' => __('Edit Event','yd'), 
    'new_item' => __('New Event','yd'), 
    'view_item' => __('View Event','yd'), 
    'search_items' => __('Search Event','yd'), 
    'not_found' => __('No event found','yd'), 
    'not_found_in_trash' => __('No event found in Trash','yd'), 
    'parent_item_colon' => '' 
); 

    $args = array(
    'labels' => $labels, 
    'public' => true, 
    'exclude_from_search' => false, 
    'publicly_queryable' => true, 
    'show_ui' => true, 
    'show_in_menu' => true, 
    'show_in_admin_bar' => true, 
    'query_var' => true, 
    'capability_type' => 'post', 
    'hierarchical' => false, 
    'menu_position' => 5, 
    'menu_icon' => 0, 
    'supports' => array('title','editor','excerpt') 

); 

register_post_type('event',$args); 
} 

register_taxonomy(
    "event-category", 
    array("event"), 
    array(
     "hierarchical" => true, 
     "label" => __("Event Categories",'yd'), 
     "singular_label" => __("Event Category",'yd'), 
     "rewrite" => array('slug' => 'event') 
    ) 
); 

Буду признателен за вашу помощь. Я пробовал все, и мне жаль, что я сделал некоторые глупые ошибки. Но до сих пор я не мог это сделать. Заранее спасибо!

+1

Эта проблема была отсортирована ... По сути, я подумал, что * example.com/event/* будет возвращать loop-event.php, но на самом деле это должны быть URL-адреса категорий, например * example.com/event-category/all- события/* и т. д. ... мозг закорочен. –

ответ

4

Когда вы добавляете новый пользовательский тип сообщения в WordPress, вам необходимо сбросить/обновить постоянные ссылки. Перейдите по ссылке: Settings > Permalinks и нажмите кнопку Сохранить изменения (сделайте это дважды). Это должно решить вашу проблему.

+0

Спасибо, Sunny! Я просто попробовал это, и это сработало, но только после того, как я создал loop.php (без * -event *). Поскольку у меня есть другие типы сообщений, я хочу использовать loop-event.php и loop-lecture.php и т. Д. Позвольте мне попытаться добавить переписывание в пользовательский регистр типа записи ... обратно в мин ... –

+0

Мое удовольствие Янь, Рад, что смог помочь. –

0

Вам необходимо очистить правила перезаписи, сгенерированные WordPress.

Создания функции, как показано ниже:

Если тип таможенного поста в вашем использовании шаблона:

add_action('after_switch_theme', 'rewrite_flush'); 

Если тип таможенного поста в вашем использовании плагина:

register_activation_hook(__FILE__, 'rewrite_flush'); 

Другой способ - это то, что ответ @Sunny Johal.

Смежные вопросы