web-dev-qa-db-ja.com

特定のテンプレートファイルへのリンクを取得する

カテゴリ別、タグ別、日付別、投稿者別のリストを含む、私のブログ用の詳細なアーカイブページを作成するための、カスタムの「アーカイブ」テンプレートを作成することを計画していました。静的リンクを使用するのではなく、WordPress内で特定のテンプレートファイルへのリンクを取得する方法はありますか。ページのURLに関係なくリンクを機能させたいのですが、可能ですか。

1
daysrunaway

これは "Archive"ページテンプレートを使って最初のページのURIを印刷する関数です。テンプレートの名前はtemplate-archive.phpです(archive.phpという名前は付けず、テンプレート階層をハイジャックしないでください)。これをfunctions.phpにドロップしてテンプレートで呼び出すことも、テンプレートファイルで直接関数内のコードを使用することもできます。

function wpse25797_the_archives_link() {
    $archive_page = get_pages(
        array(
            'meta_key' => '_wp_page_template',
            'meta_value' => 'template-archive.php'
        )
    );
    $archive_id = $showcase_page[0]->ID;
    echo get_permalink( $archive_id );
}
1
mrwweb

アーカイブの内容によって異なります。テンプレート階層を見てください。

http://codex.wordpress.org/images/1/18/Template_Hierarchy.png

ご覧のとおり、アーカイブにはさまざまな種類があります。分類、カテゴリ、タグ、作成者、日付、投稿。 'archive'クエリで特定の種類のテンプレートが見つからない場合、WordPressはデフォルトの汎用の 'archive.php'テンプレートを使用します。それでも見つからない場合は、デフォルトの 'index.php'になります。

いくつかの種類のアーカイブを組み合わせた一般的なアーカイブページを作成しようとしている場合は、理論的には階層内の任意の場所でそれを実行できます。そこにはどのような種類のデータが表示されるのでしょうか(あなたの猫に関連するのか、それとも中心的な一般的なものなのか)。

たとえば、category.phpという名前のテンプレートを作成した場合、特定のカテゴリ用に特定のテンプレートを作成しない限り、そのテンプレートを使用してカテゴリ要求が表示されます。あなたがcategory.phpとcategory-myslug.phpを持っていれば、 'myslug'カテゴリはその特別なテンプレートと一緒に現れるでしょうが、他の全ては一般的なcategory.phpテンプレートを使って現れるでしょう。

これをすべて家に持って帰るために、あなたのURLが http://example.com/category/cat1 であるならば、それは同じテンプレートを使うように作られることができます http://example.com/category/cat2 は、テーマ内にどのテンプレートが存在し、どのテンプレートが存在するかに基づいています。

同じロジックが、タグテンプレート、ページテンプレート、日付ベースのアーカイブ、カスタム分類テンプレート、およびカスタム投稿タイプテンプレートにも適用されます。さらに、単一のテンプレートをすべてのアーカイブに適用する場合は、archive.phpテンプレートを作成して、テーマにもっと具体的なテンプレートがないことを確認してください。

お役に立てれば。

0
eddiemoya