あくまで自分用の覚え書きなので文章とか適当です...

アーカイブページ

register_post_type‘has_archive’ => false にする。

functions.php

register_post_type(
	'投稿タイプ',
	array(
		'has_archive' => false,
	)
);

Tips

固定ページを扉ページとして使用する場合は固定ページを作成し、post_type をスラッグにする。

タクソノミーアーカイブページ

pre_get_posts フックを利用する。
ちなみに register_taxonomy で ‘public’  => false にしてしまうとフロントだけでなく管理画面からも消えてしまうので注意。

トップページにリダイレクトさせる場合

wp_safe_redirect を使う

functions.php

function my_redirect_xxx_taxonomy_archive_to_home() {
	if ( is_admin() ) {
		return;
	}

	if ( is_tax( 'タクソノミー名' ) ) {
		wp_safe_redirect( home_url(), 301 );
		exit;
	}
}
add_action( 'pre_get_posts', 'my_redirect_xxx_taxonomy_archive_to_home' );

404 にする場合

functions.php

function my_404_xxx_taxonomy_archive( $qry ) {
	if ( is_admin() ) {
		return;
	}

	if ( is_tax( 'タクソノミー名' ) ) {
		$qry->set_404();
	}
}
add_action( 'pre_get_posts', 'my_404_xxx_taxonomy_archive' );

投稿詳細ページ

template_redirect フックを利用する。( functions.php に記述 )

トップページにリダイレクトさせる場合

wp_safe_redirect を使う

functions.php

function my_redirect_xxx_single_to_home() {

	if ( is_admin() ) {
		return;
	}

	if ( is_singular( '投稿名' ) ) {
		wp_safe_redirect( home_url(), 301 );
		exit;
	}
}
add_action( 'template_redirect', 'my_redirect_xxx_single_to_home' );

設定例

  • newsというカスタム投稿
  • アーカイブ出力無し
  • 詳細出力無し
  • 404ページは作らない
  • LPのため、トップページにリダイレクトさせる
function my_news_post() {
	register_post_type(
		'news',
		array(
			'labels'        => array(
				'name'         => 'お知らせ',
				'add_new_item' => 'お知らせを追加',
				'edit_item'    => 'お知らせを編集',
				'all_items'    => 'お知らせ一覧',
			),
			'public'        => true,
			'show_ui'       => true,
			'menu_position' => 5,
			'supports'      => array(
				'title',
				'editor',
				'thumbnail',
				'page-attributes',
			),
			'has_archive'   => false, // 一覧を出力しない
			'show_in_rest'  => true, // Gutenberg.
		)
	);
}
add_action( 'init', 'my_news_post' );


function my_redirect_xxx_single_to_home() {

	if ( is_admin() ) {
		return;
	}

	if ( is_singular( 'news' ) || is_404() ) {
		wp_safe_redirect( home_url(), 301 );
		exit;
	}
}
add_action( 'template_redirect', 'my_redirect_xxx_single_to_home' );

アーカイブ & 投稿詳細ページ

ややこしいのでtemplate_redirect処理の方がいいかも…

管理画面一覧から「表示」ボタンが消える。

register_post_type‘publicly_queryable’ => false’ を追加する。
該当ページにアクセスするとトップページにリダイレクトされるようになる?(確認中)

補足

タクソノミーアーカイブはフロント表示されるが、投稿が表示されなくなる。

functions.php

register_post_type(
	'投稿タイプ',
	array(
		'publicly_queryable' => false,
	)
);
スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です