web-dev-qa-db-ja.com

最初の子投稿へのカテゴリリンクのリダレクト

カテゴリリンクを最初の子投稿にリダイレクトしようとしています。私はcategory.phpで以下のコードを使用しています。これはリダイレクトされますが、リンクは最初の子投稿には行きません。 ASCの日付順で最初の子投稿にリダイレクトするにはどうすればよいですか

/*
 Category Template:
 Template URI: 
 Description: 
 */
if ( have_posts() ) :
    while ( have_posts() ) : the_post();
        wp_redirect( get_permalink( $post->ID ) );
    endwhile;
endif;
1

リダイレクトするページロードシーケンスが遅すぎます。ヘッダがブラウザに送信される前にリダイレクトする必要があります。 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
s_ha_dum

get_posts()を使って、探しているものやリダイレクトしたい場所を絞り込むことができます。

get_posts()とそのパラメータの一般的な使い方については Codexを参照してください そしてあなたのリダイレクトにこれを使うことができます(テストされていません。

<?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
flomei