next_post_link()は初期設定で、リンクに記事のタイトルを使います。記事のタイトルが長くなると、見た目がおかしくなったり、左右でリンク同士が衝突したりすることもありますので、ここではタイトルの文字数を制限する方法を紹介します。「リンクが衝突する」というのは例えば上のようなケースです。キャッチーな言葉づかいや、SEOを考慮した言い回しにしようとすると、タイトルは得てして長くなりがちですので、しばしばこのような問題に直面します。こちらでも述べましたが、この問題はCSSで解決することができます(floatで左右に振っていることを想定しています。スタイルの全容はこちらを参照してください)。ellipsis;を有効にしています。スタイル適用結果CSSで定義すると、全体の幅が変わっても確実に衝突することはありません。CSSのサポートに注意white-spaceやtext-overflowは古いブラウザでサポートされていません。Use...などで状況を確認の上、適宜ベンダープレフィックスを入れるか、または別の方法を検討してください。PHPで文字数を限定するprevious_post_link()は自動的にリンクを生成して挿入してくれるので便利ですが、記事のタイトルだけを取得してくることはできません。そこで、ある投稿の1つ前の投稿オブジェクトを取得できるget_previous_post()を利用します。基本的な考え方まずはべた書きしてみます。?>6行目で1つ前の投稿を取得し、$prev_postに格納しています。このオブジェクトからタイトルを取得している処理が9行目です。記事のタイトルはthe_title()で出力する場合the_titleフィルターを通りますので、念のためここでも通してあります。必要ない場合は$prev_post->post_titleをそのままタイトルとして使用して構いません。11~13行目で、もし文字数が最大数を超えていた場合に、部分文字列を取得し、最後に'...'を付ける処理を行っています。15行目以降はリンクタグを生成する処理です。このコードを投稿ページの下あたりで実行すると、次のような出力を得ることができます。今回は前の投稿を取得する処理でしたが、次の投稿を取得する場合も考え方は全く同じです。previousやprevをnextで置き換えれば事足りると思います。関数にしてまとめる前後の投稿を取得するために、上で示したコードをコピーし部分改変するのは冗長であり、あまり望ましくありません。そこで、functions.phpにどちらでも使える関数を作成し、使う場所で適宜呼び出すようにするのが得策です。}$previousで前後を、$max_lengthで切り取る文字数を、そして$trim_markerで切り取った場合に後ろにつける文字列を指定します。リンクを出力したい箇所で、次のようにして使います。);?>実際にはHTMLのタグでマークアップして使うことになると思います。次のようになるでしょう。</div></nav>この結果、最大文字数を超える場合は切り取り、かつ省略文字を付加し、そうでない場合はそのまま出力するという処理を適用した投稿前後のリンクを得ることができます。作成した関数を利用した出力結果オプショナル引数のデフォルト値や、HTMLのマークアップはサイトに合わせて変更してください。