我想将类别页面用作博客的主页。那是可能的,我该怎么做?它使用.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_querypre_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' );

如果要修改 模板, ,那么您可以做两件事之一:

  1. 创建一个 home.php 带有所需的标记
  2. 利用 template_redirect 或者 home_template 强迫WordPress包括您的 category.php 模板。

编辑

如果您希望博客文章索引URL看起来像:

www.example.com/main

那么你也能 用一个 静态头版, ,并为您的博客文章索引分配一个名为“主”的静态页面。

如果这是您的目标:

我真的想要重定向。我想要主页(http://example.com/)重定向到类别页面(看起来像 http://example.com/main/)

...然后接受的答案是正确的。

其他提示

类别页面不能成为主页(只是不做那样的工作)。

还有两个选择:

  1. 将主页限制为特定类别的帖子(关闭但不是同一件事)。
  2. 将主页重定向到实际类别页面。

既然您可以重定向尝试,请尝试关注。创造 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的新主页作为模板。

许可以下: CC-BY-SA归因
scroll top