私は私のワードプレスのテーマで次/前の記事を表示するために次のコードを使用しています。
<?php
previous_post_link('<span class="left">← %link</span>');
next_post_link('<span class="right">%link →</span>'); ?>
それはうまくいっていますが、大きすぎるリンクは私が持っているスペースのためにうまくいかないので、私はリンクに表示される投稿タイトルを特定の長さに制限したいです。また、リンクと矢印が同じスタイルで表示されるように、リンク内に矢印を入れたいと思います。それも可能ですか?
ありがとうございました!
これはあなたのためにこれを実装する必要がある小さなコーディングです:
<?php $max_length = 5; // set max character length here
$next = get_next_post()->ID;
$prev = get_previous_post()->ID;
if( $prev ) {
$title = get_the_title( $prev );
$link = get_the_permalink( $prev );
$post_name = mb_strlen( $title ) > $max_length ? mb_substr( $title, 0, $max_length ) . ' ..' : $title;
?>
<span class="left">
<a href="<?php echo $link; ?>" rel="prev" title="<?php echo $title; ?>">← <?php echo $post_name; ?></a>
</span>
<?php
}
if( $next ) {
$title = get_the_title( $next );
$link = get_the_permalink( $next );
$post_name = mb_strlen( $title ) > $max_length ? mb_substr( $title, 0, $max_length ) . ' ..' : $title;
?>
<span class="right">
<a href="<?php echo $link; ?>" rel="next" title="<?php echo $title; ?>"><?php echo $post_name; ?> →</a>
</span>
<?php
} ?>
あなたのテンプレートに役立つことを願っています。
編集:これはマルチバイト文字で動作することができるように小さな修正。 (mb_strlen - mb_substr)
これはCSSでできませんか?
.nav_posts .title {
display: inline-block;
text-overflow: Ellipsis;
max-width: 30ex;
white-space: nowrap;
overflow: hidden;
}
<?php
previous_post_link('<span class="nav_posts left">← <span class="title">%link</span></span>');
next_post_link('<span class="nav_posts right"><span class="title">%link</span> →</span>');
?>
これらは両方ともget_adjacent_post_link()
関数にトリクルインする必要があります。これは動的 {$adjacent}_post_link
/ filter(ここで$adjacent
はprevious
またはnext
)を介して結果を渡します。
このフィルタを使用して最終出力に変更を加えることができるはずです。