web-dev-qa-db-ja.com

共有用語を使用して共有カスタム分類法用の別のテンプレートを作成する

enter image description here私は "product_category"と呼ばれるカスタム分類法を作成しました。それは投稿タイプ "books"と "movies"と共有されています。

そのため、両方の投稿タイプに対して異なるテンプレートを作成する必要があります。

両方のテンプレートのデザインが異なるので、両方のpost_type共有分類法(両方のpost_typeで用語が共有される場合でも)は異なるテンプレートを持つ必要があります。

パスは以下のようになります: -

site/books/product_category /ホラー/

site /映画/ product_category /ホラー/

2
user2506619

見て、それはのような道を持つことはかなり難しいです

site/books/product_category /ホラー/

site /映画/ product_category /ホラー/

あなたが述べたようにurlを保とうとするならば、ワードプレス機能がcustom_post_typeとそれらの分類法の間で矛盾するように。私はあなたがあなたが抱えている問題の解決策として私が以下に述べることを考慮することを勧めます。

site/product_category/horror /?post_type = books

site/product_category/horror /?post_type = movies

今すぐ共有用語に従ってテンプレートを保持するために、テーマディレクトリに2つのテンプレートを作成します。

  • common-term-books.php
  • common-term-movies.php

そして、このコードを使用して、カスタム投稿タイプに基づいてテンプレートにリダイレクトします。

add_filter( 'template_include', 'wpse_152146_template_override', 99 );
function wpse_152146_template_override(){
    if (is_tax()) {
        if ( 'books' == $_GET['post_type']) {

            $new_template = locate_template( array( 'common-term-books.php' ) );
            if ( '' != $new_template ) {
                return $new_template ;
            }

        }
        elseif ( 'movies' == $_GET['post_type']) {

            $new_template = locate_template( array( 'common-term-movies.php' ) );
            if ( '' != $new_template ) {
                return $new_template ;
            }

        }
        else
            return $template;
    }
    else
        return $template;
}

また、post_typeに基づいてURLを取得するために作成したcustom_term_link関数を使用することもできます。

function get_custom_term_link( $term, $taxonomy, $post_type ){
    $link = get_term_link( $term, $taxonomy );
    return $link.'?post_type='.$post_type;
}

get_custom_term_link( 'horror', 'product_category', 'books');

テンプレートファイルを作成することを忘れないでくださいcommon-term-books.phpcommon-term-movies.php。それ以外の場合は、空白の白い画面が表示されます。

1
Abhineet Verma