web-dev-qa-db-ja.com

作成者とカテゴリの両方が適切にフィルタ処理されている場合にテンプレートの解像度を制御する方法

次のURLはカテゴリテンプレートに解決されます。 http:// localhost/author/myusername /?category_name = somecategory

私はcategory-somecategory.phpテンプレートとただの一般的なauthor.phpテンプレートを持っています。そのようなURLにauthor.phpの代わりにcategory-somecategory.phpテンプレートを使用させる方法はありますか?そうでない場合、どうやってカテゴリと作者の両方をフィルタリングして作者テンプレートを使うよう強制することができますか?

2
Davy8

template_includeにフックしてロードされたテンプレートを変更し、is_authoris_categoryの両方が設定されているかどうかを確認してから、テンプレートを作成者テンプレートに含めるように切り替えることができます。

これを撃つ..

add_filter( 'template_include', 'my_template_setter' );
function my_template_setter( $template ) {
    if( is_author() && is_category() && is_archive() )
        $template = get_author_template();
    return $template;
}

どのテンプレートが読み込まれるかを変更する前に、ここでいくつでも条件付きチェックを行うことができます。

WordPressには既にいくつかのテンプレート取得機能があります。例ではこれを使用しましたが、ここにクイックリファレンスのリストを示します。

get_404_template()
get_search_template()
get_taxonomy_template()
get_front_page_template()
get_home_template()
get_attachment_template()
get_single_template()
get_page_template()
get_category_template()
get_tag_template()
get_author_template()
get_date_template()
get_archive_template() 

それが役立つことを願っています..

3
t31os

このようなことは カスタムクエリ で実行できるようです。

0
matt