次のページがあるかどうかを判断する方法


16

私はワードプレスの開発は初めてで、HTMLをWordPressテーマに変換しようとしています。ChrisCoyerの空のテーマから始めました。

<div class="navigation">
    <div class="next-posts">
        <?php next_posts_link('&laquo; Older Entries') ?>
    </div>
    <div class="prev-posts">
        <?php previous_posts_link('Newer Entries &raquo;') ?>
    </div>
</div>

が存在する場合にのみdivを出力するにはどうすればよいですかnext_posts_link()<ul>ページネーションに使用するため、これが必要です。そうしないと空の弾丸が

回答:


18

を使用してget_previous_posts_link、次のget_next_posts_link ように存在するかどうかを判断できます。

$prev_link = get_previous_posts_link(__('&laquo; Older Entries'));
$next_link = get_next_posts_link(__('Newer Entries &raquo;'));
// as suggested in comments
if ($prev_link || $next_link) {
  echo '<ul class="navigation">';
  if ($prev_link){
    echo '<li>'.$prev_link .'</li>';
  }
  if ($next_link){
    echo '<li>'.$next_link .'</li>';
  }
  echo '</ul>';
}

お役に立てれば


唯一の問題は、あなたが潜在的に...ユーザーは、既存のコードを持っている同じ問題を持っています、無効なマークアップを生成します空のリストを、レンダリング、および有効に可能性があります
t31os

3
t31os @、私は私のようなものでしょう推測するif ($prev_link || $next_link) // output ul
Jiew孟

ええ、それは..;)
t31os

コードを更新しました
-Bainternet

コードのおかげで、echo '</ul>';最後の行の直前にありません。
デイビー

13

少し前にこれを書きましたが、まだ有効なはずです:

http://www.ericmmartin.com/conditional-pagepost-navigation-links-in-wordpress-redux/

次の関数をfunctions.phpファイルに追加できます。

/**
 * If more than one page exists, return TRUE.
 */
function show_posts_nav() {
    global $wp_query;
    return ($wp_query->max_num_pages > 1);
}

コードを次のように更新します。

<?php if (show_posts_nav()) : ?>
<div class="navigation">
    <div class="next-posts"><?php next_posts_link('&laquo; Older Entries') ?></div>
    <div class="prev-posts"><?php previous_posts_link('Newer Entries &raquo;') ?></div>
</div>
<?php endif; ?>

3

最良の解決策はチェック$wp_query->max_num_pagesですが、次のものも使用できます:

<?php
if(paginate_links()) {
...
}

1
$wp_queryどこでも利用できるとは限らないことに注意することが重要です。たとえば、WooCommerceテンプレートオーバーライド内で使用しようとしてオブジェクトが存在しなかったため、functions.php代わりにEric Martinの回答を使用して内部から呼び出す必要がありました。
ブレット

もちろん、カスタムループや場合によってはwoocommerceなどのいくつかのケースを処理する必要があります。あなたの場合は、woocommerceのwpクエリまたは生成されるクエリの取得方法を確認する必要があります。
マックスウェルsc
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.