Перенаправление ссылки категории на первое дочернее сообщение


Я пытаюсь перенаправить ссылку категории на первое дочернее сообщение. Я использую следующий код в category.php. Это перенаправляет, но ссылка не переходит на первое дочернее сообщение. Как я могу перенаправить на первое дочернее сообщение в порядке возрастания по дате?

/*
 Category Template:
 Template URI: 
 Description: 
 */
if ( have_posts() ) :
    while ( have_posts() ) : the_post();
        wp_redirect( get_permalink( $post->ID ) );
    endwhile;
endif;
Author: Gabriel, 2015-11-01

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');
 3
Author: s_ha_dum, 2015-11-01 21:10:02

Вероятно, вы могли бы использовать 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();
?>
 0
Author: flomei, 2015-11-01 20:58:59