HCDコンサルティング(旧・中川勉社会保険労務士事務所FPウェブシュフ)のブログ

WordPressデフォルトテーマでTOPやCategoryのページナビゲーションをカスタマイズ

WordPressデフォルトテーマのTwentyTwelveやTwentyElevenのトップページやカテゴリーページの下にある、「←過去の投稿」「新しい投稿→」というページネーションが、とてもイケテナイと思う@web_shufuです。そこで、カスタマイズ方法を調べてみました。

(注)以下の内容は、TwentyTwelveをカスタマイズする前提で書かれています。TwentyElevenをカスタマイズする場合は、TwentyTwelveをTwentyElevenに置き換えるなど、多少応用してください。

ページネーションとは

この記事でいうページナビゲーションは、トップページやカテゴリーページなどでページ分割を行った場合の、次のページや他のページへのリンクのことです。

グーグル検索の下にある前へ 1 2 3 4 5 6 7 8 9 10 次へというようなリンクや、「←過去の投稿」「新しい投稿→」リンクもページナビゲーションです。

ページナビゲーションを担当する関数

TwentyTwelveテーマで、「←過去の投稿」「新しい投稿→」リンクを出力しているのは、twentytwelve_content_nav関数です。

トップページやカテゴリーページにあるtwentytwelve_content_nav( ‘nav-below’ );が、こんな作業(function.phpで規定されている)をして

if ( ! function_exists( 'twentytwelve_content_nav' ) ) :
/**
 * Displays navigation to next/previous pages when applicable.
 *
 * @since Twenty Twelve 1.0
 */
function twentytwelve_content_nav( $html_id ) {
    global $wp_query;

    $html_id = esc_attr( $html_id );

    if ( $wp_query->max_num_pages> 1 ) : ?>
        <nav id="<?php echo $html_id; ?>" class="navigation" role="navigation">
            <h3 class="assistive-text"><?php _e( 'Post navigation', 'twentytwelve' ); ?></h3>
            <div class="nav-previous alignleft"><?php next_posts_link( __( '<span class="meta-nav">←</span> Older posts', 'twentytwelve' ) ); ?></div>
            <div class="nav-next alignright"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">→</span>', 'twentytwelve' ) ); ?></div>
        </nav><!-- #<?php echo $html_id; ?> .navigation -->
    <?php endif;
}
endif;
?>

その結果、こんなhtmlソースを出力して

<nav id="nav-below" class="navigation" role="navigation">
    <h3 class="assistive-text">投稿ナビゲーション</h3>
    <div class="nav-previous alignleft"><a href="http://www.example.com/tonyo/page/3/"><span class="meta-nav">←</span> 過去の投稿</a></div>
    <div class="nav-next alignright"><a href="http://www.example.com/tonyo/">新しい投稿 <span class="meta-nav">→</span></a></div>
</nav><!-- #nav-below .navigation -->
2013-04-04_1430

こんな表示をしてくれてます。

twentytwelve_content_navは除去すべし

このように、twentytwelve_content_navはページナビゲーションを一手に引き受けて頑張ってくれる関数です。

しかし、これをカスタマイズするとなると、category.phpやindex.phpではなく、function.phpをいじらないといけません。

また、function.phpでは、翻訳関数の_e関数と__関数がかなりたくさん使われているので、WordpressやPHPにある程度慣れないと、とてもカスタマイズしにくいです。

そこで、twentytwelve_content_nav( ‘nav-below’ );は削除してしまい、デフォルトとは全く異なるページナビゲーションを導入するほうがカスタマイズしやすいと思います。

プラグインでカスタマイズ

「デフォルトとは全く異なるページナビゲーションを導入する」方法として、最も手軽なのがプラグインです。

私のオススメはWP-PageNaviとWP PageNavi Styleです。

導入にあたってはこちらを参考にしてください。

[img-link url=”http://www.seotemplate.biz/blog/wordpress-plug/10904/” title=”WordPressのページ送り用プラグイン – WP PageNavi Styleの使い方 | WP SEOブログ”]

 

ちなみに、WP SEOブログさんは、他にも役立つ記事満載ですので、一度チェックすることをオススメします。

スニペットをコピペする

WordPressやPHPに多少慣れているなら、プラグインよりスニペットのコピペがオススメです。

以下の記事がとてもよくまとまっています。

[img-link url=”http://coliss.com/articles/blog/wordpress/how-to-build-a-wordpress-post-pagination-without-plugin.html” title=” WordPressにプラグイン無しでページネーションを設置する方法 | コリス”]

 

デフォルトのページナビゲーションの文言だけを変えたい場合

デフォルトのページナビゲーションの文言だけを変えたい場合は、
twentytwelve_content_nav( ‘nav-below’ );
があった場所に、以下の部分を貼り付けてください。すると、デフォルトのページナビゲーションが復活します。

global $wp_query;
if ( $wp_query->max_num_pages> 1 ) : ?>
    <nav id="nav-below" class="navigation" role="navigation">
        <h3 class="assistive-text">投稿ナビゲーション</h3>
        <div class="nav-previous alignleft"><?php next_posts_link( '<span class="meta-nav">←</span> 過去の投稿'); ?></div>
        <div class="nav-next alignright"><?php previous_posts_link( '新しい投稿 <span class="meta-nav">→</span>' ); ?></div>
    </nav><!-- #nav-below .navigation -->
<?php endif;

あとは、日本語の部分とか、→を自分の好きな言葉に変えればカスタマイズできます。


投稿日

カテゴリー:

投稿者:

 最終更新日:

タグ: