blog.hekt.org

WP-PageNavi

ページナビ(下のほうの1 2 3 4 » … 11とか書いてあるやつ)の出現条件がなんだかマヌケでした。

<?php if( !is_single() && !is_page()): ?>
<div class="section" id="footnavi">
 <h2>More entries</h2>
 <ul>
  <li id="pagenavi"><?php if(function_exists('wp_pagenavi')) { wp_pagenavi; } ?></li></ul>
 <!--/ul-->
</div>
<?php endif; ?>

これだと次/前のページがなくても<li>が空で出現してしまっていたので、以下のように修正。

<?php if( !is_single() && !is_page() && function_exists('wp_pagenavi')): ?>
<div class="section" id="footnavi">
 <h2>More entries</h2>
 <ul>
  <li id="pagenavi"><?php wp_pagenavi(); ?></li></ul>
 <!--/ul-->
</div>
<?php endif; ?>

したのですが、wp_pagenaviが必ず真を返してくる?のか、どうも上手く動かず。

さんざん悩んだあとに、なんでだー、とpagenavi.phpのソースを覗いてみたら、ちゃんと内容のあるなしや表示するページを判定してくれていたました。それならwp_pagenaviのオプション(内容の前後に表示する文章を指定できる)に見出しやDIVの部分を含めても問題ないので、そうすることに。

<?php wp_pagenavi('<div class="section" id="footnavi"><h2>More entries</h2><ul><li id="pagenavi">','</li></ul></div>'); ?>

せっかくオプションを用意してくれてるんだからこっちの方がスマートですよね。でも原因を解明しておきたかったなあ。なんかモヤモヤ。