web-dev-qa-db-ja.com

front-page.php以降のページングに関するテンプレート階層

早くて簡単。私はfront-page.phpをWordpressで動かしています、そしてこれらのループは私の最新の投稿のためのメインループの上にあります。問題はページネーションテンプレートです。

site.com/page/2に到達すると、同じファイルテンプレートfront-page.phpが表示されますが、2回目の投稿があります。私が欲しいのは、paged.phpのような他のファイルテンプレートを見せることですが、archive.phpdate.phpさえも現れません。

Front-page.php全体をラッピングするif (!is_paged())を書く代わりに、このためのコードはありますか?

1
DarkGhostHunter

frontpage_templateにフィルタを追加し、pagedクエリvarをチェックし、最初のページを超えている場合は独自のテンプレートを追加します。この例ではpaged.phpを使用します。

function wpa56889_template_filter( $templates = '' ){
    $paged = get_query_var( 'paged' );
    if( $paged > 1 ) :
        if( !is_array( $templates ) && !empty( $templates ) ) :
            $templates = locate_template( array( "paged.php", $templates ), false );
        elseif( empty( $templates ) ) :
            $templates = locate_template( "paged.php", false );
        else :
            $new_template = locate_template( array( "paged.php" ) );
            if( !empty( $new_template ) ) array_unshift( $templates, $new_template );
        endif;
    endif;
    return $templates;
}
add_filter( 'frontpage_template', 'wpa56889_template_filter' );

フィルタ階層コーデックスエントリ がフィルタを誤ってfront_page_templateとしてリストしていることに注意してください。 frontpage_templateにするだけです。

1
Milo