前後ページへのリンクがおかしい
これに気づいた時のエントリの構成は以下の写真のようにrecolte Capsule Cutter でタマネギのみじん切りをしてみた の前の記事が パソリリーダ RC-S390 で接続エラーが出た時の対処方法 で、さらに前が Bluetooth 接続のパソリリーダーライター RC-S390 を iPhone から使ってみた となっています。
パソリリーダーのエラー対処のエントリを表示した時のフッタ。NEXT に recolte でのみじん切りのエントリが出て欲しいのに出ていません。
どうも表示されないパターンは予約投稿などで連番をスキップしたり変更したりした場合の模様。私は書きためている記事の公開タイミングを色々と変えていたりするので、サーバに登録された順とは全く違う順序で記事を公開しています。
こうした記事はどうも表示ができないことがあるようです。
原因が分かったので修正した
この表示をしているのは single.php の中の p-navi 部分。ここのソースを見ると、前後のエントリへのリンクを previous_post_link と next_post_link で作成しています。
116 117 118 119 120 121 122 123 |
<div class="p-navi"> <p> PREV : <?php previous_post_link('%link', '%title', TRUE, ''); ?> <br/> NEXT : <?php next_post_link('%link', '%title', TRUE, ''); ?> </p> </div> |
これが一般的な書き方なので最初は疑わなかったのですが、 念のため codex で関数の仕様を確認してみました
テンプレートタグ/previous post link – WordPress Codex 日本語版
すると「このタグはループ内で使用しなければなりません。」だそうです。これは盲点ですね。Stinger 3 の p-navi はループの外にあるのでうまく動いていなかったようです。
となれば、ループの外で使える関数に置き換えれば良いので get_previous_post を使って書き換えました。
Function Reference/get previous post « WordPress Codex
こちらが書き換え後のソース
116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
<div class="p-navi"> <p> <?php $prev_post = get_previous_post(); if (!empty( $prev_post )): ?> PREV : <a href="<?php echo get_permalink( $prev_post->ID ); ?>"><?php echo $prev_post->post_title; ?></a><br /> <?php endif; ?> <?php $next_post = get_next_post(); if (!empty( $next_post )): ?> NEXT : <a href="<?php echo get_permalink( $next_post->ID ); ?>"><?php echo $next_post->post_title; ?></a> <?php endif; ?> </p> </div> |
これで無事に表示できるようになりました。
2行に折り返されると見栄えが悪いので
ここまでやったら、今度はリンクが折り返されるのが見栄えが悪いなぁ〜、ということで、スタイルシートで省略することにしました。
先ほどのリンクを div タグで p-navi-link という id を指定しておいて、以下のスタイルを適用しただけ。smart.css にも同じように反映させておきましょう。
1 2 3 4 5 6 7 8 9 10 |
#p-navi-link { width: 95%; overflow: hidden; text-overflow: ellipsis; -webkit-text-overflow: ellipsis;-o-text-overflow: ellipsis; white-space: nowrap; display: inline-block; _display: inline; } |
見た目もすっきりして満足です。
ただ、スタイルシートは一部のクライアントでは適用されないことがあるので、できればスタイルシートにあまり頼らない形にした方がいいのかな、なんてことも考えながら、今回はここまで。
以前の Stinger 3 関連のエントリもよろしかったらどうぞ
最後まで読んでいただきありがとうございます。
左のアイコンをクリックして、このブログを Feedly に登録していただけると嬉しいです
Facebook ページでも情報を発信していますのでよろしかったら「いいね!」をお願いします
RSSリーダへの登録は こちら からどうぞ。
No commented yet.