WordPress 自定义帖子类型存档-<帖子类型>.php 不起作用
Posted
技术标签:
【中文标题】WordPress 自定义帖子类型存档-<帖子类型>.php 不起作用【英文标题】:WordPress custom post type archive-<post type>.php not working 【发布时间】:2013-06-02 20:18:08 【问题描述】:WordPress 新手,我一直在尝试为自定义帖子类型创建存档页面,当我单击指向 localhost/websitename/wordpress/archive-event.php
的链接时,我得到一个 404。这是我注册帖子类型的代码:
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
、刷新重写规则,甚至为帖子类型注册分类。 single-event.php
工作正常。现在呢?
【问题讨论】:
您使用任何特定的主题框架吗?一些主题框架稍微改写了通常的层次结构。例如Roots 尝试在 wp-admin 面板中再次保存永久链接 完成。还是不行。我觉得必须有一些基本的东西我做错了。我是否必须为此创建分类法或类别?我通过保存archive.php 文件创建了一个archive-event.php 页面,并且我没有进行任何更改。我想我认为它的工作方式与 single-event.php 文件相同,这是错误的吗? 【参考方案1】:固定链接结构存在问题。我已更改设置 => 我的永久链接为“日期和名称”或“月份和名称”或“帖子名称”,这解决了我的问题。
【讨论】:
【参考方案2】:我使用的是 CPT UI 插件,其中“有存档”标志默认设置为 False。 您可以在以下位置进行更改:
"Edit Post Type" tab > "Settings" > "Has Archive"
将其设置为 True,而不是忘记刷新永久链接(单击永久链接页面上的保存)。
【讨论】:
【参考方案3】:自定义帖子类型存档页面只需要两件事。
1) has_archive
应该是 true
2) 代码更新后需要刷新一次永久链接缓存。
functions.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' );
默认archive.php
可以使用,但如果您想覆盖默认的,您必须使用正确的存档模板archive-<custom_post_slug>.php
,例如
archive-events.php
另外,如果您只是注册您的帖子类型,则需要刷新永久链接缓存。通过将永久链接结构更改为 Wordpress 管理员来做到这一点。
现在您可以访问存档页面https://domain/post_slug/
注意:如果您在永久链接结构中选择Numeric
,则网址为https://domain/archives/post_slug/
【讨论】:
【参考方案4】:不确定这是否能回答您的问题,但您是否重置了永久链接结构?
如果您刚刚添加了自定义帖子类型,则需要转到永久链接页面并按保存。
希望有帮助!
【讨论】:
【参考方案5】:在您的 URL 示例中,您似乎正在尝试获取实际的模板文件名本身。
但是,如果您将 slug 定义为 event
,您应该能够简单地访问 localhost/websitename/wordpress/event
【讨论】:
恐怕 url 也不起作用。我也尝试将 slug 保留为默认值,并设置 rewrite => true,这也无济于事。 @user2280983 你有没有找到解决方案?我和你有同样的问题! @Michael Giovanni Pumo 不是真的,我只是将我的存档链接指向“localhost/sitename/wordpress/?post_type=event”。不是很漂亮,但如果您只想显示某种帖子类型的列表,它似乎可以工作。 @user2280983 我已经根据我的发现提交了这个问题的新答案。似乎对我很有效!看看,如果它有助于回答你的问题,那就太好了。祝你好运!以上是关于WordPress 自定义帖子类型存档-<帖子类型>.php 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Wordpress 为自定义帖子类型存档页面选择了错误的模板