Home > archives > pagingをエントリー下部にリストで出力

pagingをエントリー下部にリストで出力

WordPress標準の、次ページor前ページのリンクを表示する関数は、インデントや改行が汚かったりMaxページが1だったりすると空要素となってしまったりする。…これが嫌で嫌でどうにかならんもんかなぁと思いつつ、試行錯誤を重ね、標準関数ではどうにも出来ないことに。ショック。
Wordpressは、かなり生なとこまで触れるのに、標準の関数の表示フォーマットが乏しすぎるなぁ。値だけ出力するか、出力時のに前後の文字列をカスタマイズできるようにするか、どの関数もechoの前にHookできるようにしてほしいなぁ。

ということで、独自に関数を作ってみました。

/**
 * 次ページ、前ページへのリンクを表示します。
 */
function paging_link($args = '') {
    global $paged, $wpdb, $wp_query;

    if (is_array($args))
        $r = &$args;
    else
        parse_str($args, $r);

    $defaults = array('next_label' => 'Next Page', 'prev_label' => 'Previous Page', 'indent' => '');
    $r = array_merge($defaults, $r);
    extract($r);

    if ($indent != '') {
        $indent = (int) $indent;

        for ($i = 0; $i < $indent; $i ++)
            $indentText .= "\\t";
    }

    // max_page を取得
    if (!$max_page)
        $max_page = $wp_query->max_num_pages;

    // paged を取得
    if (!$paged)
        $paged = 1;

    // 次ページのページ番号を設定
    $nextpage = intval($paged) + 1;

    if(!is_single()) {
        if ($max_page > 1)
            echo "$indentText<ul class=\\"flip\\" id=\\"flip2\\">\\n";
        if (empty($paged) || $nextpage <= $max_page) {
            echo "$indentText\\t<li><a href=\\"";
            next_posts($max_page);
            echo '">'. preg_replace('/&([^#])(?![a-z]{1,8};)/', '&#038;$1', $next_label) ."</a></li>\\n";
        }

        if ($paged > 1) {
            echo "$indentText\\t<li><a href=\\"";
            previous_posts();
            echo '">'. preg_replace('/&([^#])(?![a-z]{1,8};)/', '&#038;$1', $prev_label) ."</a></li>\\n";
        }
        if ($max_page > 1)
            echo $indentText . '</ul>' . "\\n";
    }
}

これを、functions.phpのどこかに貼り付けて、index.phpの出力したい部分(多くは以下の感じ)に、

<?php paging_link('next_label=次のページ&prev_label=前のページ&indent=3') ?>
                <ol class="topicPath">
                    <li><a href="/" title="Home">Index</a></li>
                    <li class="current">Memo</li>
                </ol>
            </div><!-- /main -->

指定してあげるといいと思います。

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://miniturbo.org/2007/04/02/182605/trackback/
Listed below are links to weblogs that reference
pagingをエントリー下部にリストで出力 from miniturbo.org

Home > archives > pagingをエントリー下部にリストで出力

Search

Return to page top