Перенаправление ссылки категории на первое дочернее сообщение
Я пытаюсь перенаправить ссылку категории на первое дочернее сообщение. Я использую следующий код в category.php
. Это перенаправляет, но ссылка не переходит на первое дочернее сообщение. Как я могу перенаправить на первое дочернее сообщение в порядке возрастания по дате?
/*
Category Template:
Template URI:
Description:
*/
if ( have_posts() ) :
while ( have_posts() ) : the_post();
wp_redirect( get_permalink( $post->ID ) );
endwhile;
endif;
2 answers
Вы слишком поздно выполнили последовательность загрузки страницы для перенаправления. Вам необходимо перенаправить, прежде чем заголовки будут отправлены в браузер. Крючок template_redirect
должен быть довольно хорошим вариантом:
function redirect_cat_wpse_207298() {
if (is_category()) {
global $post;
wp_safe_redirect(get_permalink($post->ID));
die;
}
}
add_action('template_redirect','redirect_cat_wpse_207298');
Вероятно, вы могли бы использовать get_posts()
для уточнения того, что вы ищете/куда вы хотите быть перенаправлены.
Смотрите Кодекс для общего использования get_posts()
и его параметров , и вы могли бы использовать это (непроверенное, надеюсь, это сработает) для вашего перенаправления:
<?php
$args = array('posts_per_page' => 1);
$postslist = get_posts($args);
foreach ($postslist as $post) :
setup_postdata($post);
wp_redirect(the_permalink());
endforeach;
wp_reset_postdata();
?>