Как сделать страницу категории домашней страницей блога?


Я хочу использовать страницу категории в качестве домашней страницы своего блога. Возможно ли это и как я могу это сделать? Он попробовал это с помощью правила перезаписи.htacces, но это не сработало.

Author: 2ndkauboy, 2010-09-15

5 answers

Обновление

Исключая все остальные решения, остается по крайней мере одно: 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' );

Если вы хотите изменить шаблон , то вы можете сделать одно из двух:

  1. Создайте home.php с требуемой разметкой
  2. Используйте template_redirect или home_template, чтобы заставить WordPress включить ваш category.php шаблон.

Редактировать

И если вы хотите, чтобы URL-адрес индекса записей в блоге выглядел так:

www.example.com/main

Затем вы можете использовать Статическую первую страницу, и назначьте статическую страницу под названием "главная" в качестве индекса ваших записей в блоге.

И если это ваша цель:

Я действительно хочу перенаправление. Я хочу, чтобы домашняя страница (http://example.com/) перенаправлялась на страницу категории (которая выглядит так http://example.com/main/)

...тогда принятый ответ верен для ваш вариант использования.

 13
Author: Chip Bennett, 2013-11-05 15:41:02

Страница категории не может быть домашней страницей (просто так не работает).

Есть два других варианта:

  1. Ограничьте домашнюю страницу публикациями из определенной категории (близко, но не одно и то же).
  2. Перенаправить домашнюю страницу на актуальную страницу категории.

Так как вы, кажется, в порядке с перенаправлением, попробуйте следовать. Создайте шаблон home.php в каталоге тем со следующим содержимым:

<?php
wp_redirect( 'http://www.yoursite.com/category/category-slug' );
?>

Вероятно, есть какой-то более аккуратный способ сделать это с помощью крючков, но я ничего не могу подумай прямо сейчас.

 2
Author: Rarst, 2010-09-15 17:38:12

Наиболее семантический способ сделать это вместо использования перенаправления (дополнительное время подключения) - создать пользовательский шаблон страницы.

Новая страница:

/* Template Name: New Homepage by Cat */

<?php query_posts('cat_id'=>'3');?>
<--insert loop-->
 2
Author: Robbie Guilfoyle, 2012-09-24 16:03:34

Просто добавьте фильтр категорий в свой index.php запрос в вашем шаблоне. простые

 0
Author: Mild Fuzz, 2010-09-15 18:18:50

Если вы хотите перенаправить на определенную категорию, т.е. идентификатор категории 3 , скопируйте содержимое из category.php и сделайте другой шаблон, подобный category-3.php После этого

    * Template Name: New Homepage by Cat 3*/

    <?php query_posts('cat_id'=>'3');?>
    <--insert loop-->

В чтении wordpress нам нужно установить домашнюю страницу в качестве страницы сообщений, а для домашней страницы выберите новую домашнюю страницу Cat 3 в качестве шаблона.

 0
Author: Kishore Sahoo, 2013-11-08 10:59:14