web-dev-qa-db-ja.com

ページを指すカスタム投稿タイプのアーカイブページのURL

私の「カスタム投稿タイプのアーカイブページ」がPageを指すようにしてください。

状況は以下のとおりです。

私はWordpressにパーマリンクhttp://myurl.com/galleriesを持つPageを持っています。このページはカスタム投稿タイプ= vmgalleryの投稿のリストを表示します。このページのカスタムロジックはうまくいっています。

別の観点から見ると、このページは特定のカスタム投稿タイプvmgalleryのすべての投稿を表示するため、「カスタム投稿タイプアーカイブページ」のように機能します。現在、ユーザーが http://myurl.com/vmgallery/ wordpressにアクセスしてアーカイブページ(archive.php)を読み込んでいる場合は、代わりにhttp://myurl.com/galleriesページを読み込んでください。

これを達成する方法?

2
renathy

ここには複数の選択肢があります。

1.投稿タイプ登録時に投稿タイプアーカイブスラッグを定義する

'has_archive' => 'galleries'を設定することで、カスタム投稿タイプアーカイブスラッグを定義できます。 ドキュメンテーション をチェックしてください。それからあなたはあなたのページ「ギャラリー」を削除してからarchive-post_type.phpを追加してカスタマイズすることができます

2.投稿タイプのデフォルトアーカイブを無効にする

'has_archive' => falseを設定してアーカイブを無効にし、投稿タイプアーカイブのページを保持します。

3.アーカイブ要求をあなたのページにリダイレクトする

デフォルトのアーカイブリクエストを自分のページに永久的にリダイレクトできます。

function archive_to_custom_archive() {
    if( is_post_type_archive( 'post_slug' ) ) {
        wp_redirect( home_url( '/galleries/' ), 301 );
        exit();
    }
}
add_action( 'template_redirect', 'archive_to_custom_archive' );

私は最初の方法がいいと言うでしょう!

9
Sumit

これは、単一の投稿に影響を与えずにアーカイブページのリンクを削除するためのコードです。

function dg_custom_post_type_args( $args, $post_type ) {
if ( $post_type === "custom post type" ) {
    $args['rewrite'] = array(
    'with_front' => false,
    'slug' => 'slug here'
  );
}

return $args;
}
add_filter( 'register_post_type_args', 'dg_custom_post_type_args', 20, 2 );
0