「アーティスト」という名前のページを作成し、カスタム投稿タイプの投稿の一覧を表示します。ここでも「アーティスト」です。
[アーティスト]投稿タイプの最初の投稿に[アーティスト]ページにアクセスした人をリダイレクトするにはどうすればよいですか。
これはあなたのページ 'Artists'が10のIDを持っていると仮定しているので、必要に応じてそれを変更してください。
必要に応じて、ニーズに合わせて$args
配列を修正することもできます。これが WP_Query
のコーデックスです。これは、使用できるパラメーターを示しています。
最後に、これはあなたのページの一番上(出力する前)に行く必要があります。そうしないと、ヘッダ情報がすでに出力されているというエラーが出ます。
if(is_page(10)) :
$args = array(
'posts_per_page' => 1,
'post_type' => 'artists'
);
/** Get the posts that match and grab the URL of the first post */
$posts = get_posts($args);
$redirect_url = get_permalink($posts[0]->ID);
/** Redirect to the specified URL */
wp_redirect($redirect_url);
exit;
endif;
特定のページを最初の投稿にリダイレクトしたい場合は、 / u/gmazzap の割り当てに関する素晴らしい回答をお勧めします 投稿タイプアーカイブとしてのページテンプレート 。
代わりに、投稿タイプアーカイブを最初の投稿にリダイレクトしたい場合は、以下のようにします。
/**
* Redirect post type archive page to first post
*
* @return void
*/
function wpse91590() {
if( is_post_type_archive( 'artists' ) ) {
// Grab the first artist post ID and store it in an array
$posts = get_posts( array(
'post_type' => 'artists',
'posts_per_page' => 1,
'fields' => 'ids',
'orderby' => array( 'menu_order' => 'ASC', 'post_date' => 'DESC' ),
) );
// If our array isn't empty, redirect
if( ! empty( $posts ) ) {
wp_redirect( get_permalink( $posts[0] ), 301 ); // Variable $posts[0] holds the artist post ID
exit();
}
}
}
add_action( 'template_redirect', 'wpse91590' );
アイデアはPostオブジェクト全体を必要としないので、IDを取得してそれにリダイレクトするだけです。最後に、それ以上実行されないようにスクリプトを終了します。