通常我会尽力通过在线搜索或无休止的实验来寻找答案。这次我真的很绝望。我已经阅读了很多相关的问题,但没有一个能解决我的问题。
我在许多其他主题中使用'get_template_part'并且效果很好。这次我不知道是什么造成了不同。
在我的主题中,有一个已注册的自定义帖子类型事件。事件中帖子的网址看起来像 example.com/event/wine-tasting 。
问题是: example.com/event / 返回404页面,而不是排列所有事件帖子(loop-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(); ?>
这是我的loop-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')
)
);
我真的很感谢你的帮助。我已经尝试了一切,我希望是我犯了一些愚蠢的错误。但到目前为止我无法解决这个问题。提前谢谢!
答案 0 :(得分:4)
在WordPress中添加新的自定义帖子类型时,您需要刷新/刷新永久链接。请转到:Settings > Permalinks
并点击保存更改按钮(执行此操作两次)。这应该可以解决您的问题。
答案 1 :(得分:0)
您需要刷新WordPress生成的重写规则。
创建如下函数:
function rewrite_flush() {
flush_rewrite_rules();
}
如果您的模板中包含自定义帖子类型,请使用:
add_action( 'after_switch_theme', 'rewrite_flush' );
如果您的插件使用自定义帖子类型:
register_activation_hook( __FILE__, 'rewrite_flush' );
另一种方式是@Sunny Johal的答案。