web-dev-qa-db-ja.com

カスタム投稿タイプの特定の分類法で単一投稿ビューを無効にする

クライアント用に開発された特定のカスタム投稿タイプには、ややユニークな問題があります。基本的には、作成したCPTで特定の分類法に割り当てられているすべての投稿に対して、単一の投稿ビューを無効にする必要があります。

例:

カスタム投稿の種類: 'レンタル'

分類法: 'アパート'、 'マンション'、 '賃貸'

パーマリンク構造(分類法に関係なく): http://www.domain.com/rentals/post-title/

ユニークな分類法は '賃貸'されています。これは、利用できなくなったすべての賃貸料の単なるランディングページ(分類法のリスト)として、すべての主要賃貸料とは別のページに表示されます。このランディングページから単一の投稿へのクリックスルーはないため、単一の投稿に直接アクセスすることはできません。各レンタルリスティングのサムネイル、タイトル、住所だけがグリッドに配置されています。他の分類法はメインの「レンタル」ページにまとめられており、クリックスルーから単一の投稿まであります。

しかし、あなたが直接これらの「賃貸された」リストのための単一の投稿にたどり着くことができないとしても、それらはまだサーチエンジンによって索引をつけられて、そして技術的に正しいパーマリンクの知識で「見る」ことができます。

そしてもっと大きな問題は、他の分類法(例: 'apartment'や 'condo')に割り当てられているように始まるリストが、もう利用できなくなった 'レンタル'分類法に変更されることです。これらは間違いなくインデックス化されており(そしてそうあるべきです)、そしてもっと直接の、ダイレクトリンクがEメールマーケティングキャンペーンでクライアントに送られました。そのため、クライアントが「レンタル」ランディングページとは別に表示できないリスティングの古い電子メールをクリックしても、そのリスティングの単一の投稿ページにアクセスできます。

クライアントは、現在のリストを「レンタル済み」に変換するときに、パーマリンクを「変更する」ことができますが、同じタイトルのリストが多数あることもよくあります。そのため、WordPressはデフォルトで新しい投稿ごとにパーマリンクに増分を追加し( 'colonial-park-04'など)、元の投稿のパーマリンクを変更した場合、Wordpressは既存のパーマリンクを再び使用します。 'リンクは再び利用可能になりますが、新しいプロパティが追加されます(さらに悪いことに)。そして、これはもともと「賃貸」として作成された投稿がインデックス化されるという問題を解決するものではありません。

  • どうすればこれを改善できますか。

ありがとうございます。

2
Kenny J

このために template_redirect フックを使います。あなたの質問の中のrentedは分類学そのものではなく、ある分類法の1つの用語であると思います。

function my_page_template_redirect() {
    if( is_singular( 'rentals' ) && has_term('rented', 'your taxonomy name') ) {
        wp_redirect( home_url(), 301 );
        exit();
    }
}
add_action( 'template_redirect', 'my_page_template_redirect' );

ページをレンダリングする前に、WPはCPTのrentalsの単一の投稿が表示されているかどうかをチェックし、rentedという用語が含まれているかどうかを調べます。

3
Marek