Как сделать страницу категории домашней страницей блога?
Я хочу использовать страницу категории в качестве домашней страницы своего блога. Возможно ли это и как я могу это сделать? Он попробовал это с помощью правила перезаписи.htacces, но это не сработало.
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' );
Если вы хотите изменить шаблон , то вы можете сделать одно из двух:
- Создайте
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 запрос в вашем шаблоне. простые
Если вы хотите перенаправить на определенную категорию, т.е. идентификатор категории 3 , скопируйте содержимое из category.php и сделайте другой шаблон, подобный category-3.php После этого
* Template Name: New Homepage by Cat 3*/
<?php query_posts('cat_id'=>'3');?>
<--insert loop-->
В чтении wordpress нам нужно установить домашнюю страницу в качестве страницы сообщений, а для домашней страницы выберите новую домашнюю страницу Cat 3 в качестве шаблона.