如何使类别页面成为博客主页?
-
16-10-2019 - |
题
我想将类别页面用作博客的主页。那是可能的,我该怎么做?它使用.htacces重写规则进行了尝试,但这没有起作用。
解决方案
更新
消除所有其他解决方案,至少还有一种: template_redirect
:
function wpse121308_redirect_homepage() {
// Check for blog posts index
// NOT site front page,
// which would be is_front_page()
if ( is_home() ) {
wp_redirect( get_category_link( $id ) );
exit();
}
}
add_action( 'template_redirect', 'wpse121308_redirect_homepage' );
您将需要通过适当的类别 $id
, , 当然。
重定向的好处 template_redirect
是您只会发生一个模板加载,而不是第二个重定向 后 模板加载。
请注意,您甚至可以更早地将其连接到该过程,例如 pre_get_posts
, ,从而有可能保存整个查询请求:
add_action( 'pre_get_posts', 'wpse121308_redirect_homepage' );
原始答案
如果您要做的就是在博客帖子索引上显示特定类别,则可以使用主的简单过滤器来完成此操作 $wp_query
在 pre_get_posts
:
function wpse1862_pre_get_posts( $query ) {
// Only modify the main query
// on the blog posts index page
if ( is_home() && $query->is_main_query() ) {
$query->set( 'category_name', 'category-slug-here' );
}
}
add_action( 'pre_get_posts', 'wpse1862_pre_get_posts' );
如果要修改 模板, ,那么您可以做两件事之一:
- 创建一个
home.php
带有所需的标记 - 利用
template_redirect
或者home_template
强迫WordPress包括您的category.php
模板。
编辑
如果您希望博客文章索引URL看起来像:
www.example.com/main
那么你也能 用一个 静态头版, ,并为您的博客文章索引分配一个名为“主”的静态页面。
如果这是您的目标:
我真的想要重定向。我想要主页(
http://example.com/
)重定向到类别页面(看起来像http://example.com/main/
)
...然后接受的答案是正确的。
其他提示
类别页面不能成为主页(只是不做那样的工作)。
还有两个选择:
- 将主页限制为特定类别的帖子(关闭但不是同一件事)。
- 将主页重定向到实际类别页面。
既然您可以重定向尝试,请尝试关注。创造 home.php
主题目录中的模板具有以下内容:
<?php
wp_redirect( 'http://www.yoursite.com/category/category-slug' );
?>
可能还有一些更整洁的方法可以用钩子来做到这一点,但是我现在什么都没想到。
执行此操作的最语义方法而不是使用重定向(额外的连接时间)是创建自定义页面模板。
新页面:
/* Template Name: New Homepage by Cat */
<?php query_posts('cat_id'=>'3');?>
<--insert loop-->
只需将类别过滤器添加到模板中的index.php查询中即可。简单
如果要重定向到特定类别IE类别ID 3,请从category.php复制内容,然后制作另一个模板类别-3.php之后
* Template Name: New Homepage by Cat 3*/
<?php query_posts('cat_id'=>'3');?>
<--insert loop-->
在WordPress读取中,我们需要将Home设置为帖子页面,而对于主页,请选择CAT 3的新主页作为模板。