10

それは単一の投稿の見方についてです。私はこのように前と次のブログ投稿へのリンクを設定しようとしています:

<a class="prevpost" href="linktoprevpost" title="prev post's title">&nbsp;</a>
<a class="nextpost" href="linktonextpost" title="next post's title">&nbsp;</a>

ここで、両方のリンクは、display:ブロックと指定された幅と高さを使用して、背景として画像を取得します。リンクされた投稿のタイトルは、ユーザーがホバーして表示できるように、aタグのtitle属性を介してアクセスできる必要があります。
また、現在のカテゴリのリンクされた投稿を制限したいと思います。だから私は得る方法を見つける必要があります

  1. 前/次の投稿のhrefが付いたaタグ
  2. 現在表示されているものと同じカテゴリにあります
  3. 背景画像のために内部テキストなし
  4. タイトル属性に前/次の投稿名が含まれる
  5. カスタムcssクラスを使用


ページを3つの主要なカテゴリに分割したため、カテゴリの一致は最初のレベルのみである必要があります。使っています

$a = get_the_category(get_the_ID());
$cat = $a[0]->name;

最初のカテゴリの名前を取得し、header.phpで追加のbody-classとして設定します。多分私はそれを再利用できますか?

また、previous_post_link()とnext_post_link()をこのように使用することもわかりました

next_post_link('%link', '', TRUE);

内部コンテンツのない同じカテゴリの投稿が表示されるので、1&2&3が解決されます。しかし、4と5を取得するには、別の方法が必要になるようです。

Wordpressバージョン3.4.1の使用。

4

4 に答える 4

46

関数やフィルターは必要ありません。and のget_adjacent_post代わりに使用するだけです。以前の投稿next_post_linkと次の投稿を取得するために使用されることprev_post_linkに注意してください。ここでそれについて読むことができます 。以前の投稿とそのタイトル属性を取得するには、これを使用します。get_adjacent_post

$prev_post = get_adjacent_post(false, '', true);
if(!empty($prev_post)) {
echo '<a href="' . get_permalink($prev_post->ID) . '" title="' . $prev_post->post_title . '">' . $prev_post->post_title . '</a>'; }

次の投稿とそのタイトル属性を取得するには、これを使用します

$next_post = get_adjacent_post(false, '', false);
if(!empty($next_post)) {
echo '<a href="' . get_permalink($next_post->ID) . '" title="' . $next_post->post_title . '">' . $next_post->post_title . '</a>'; }
于 2013-02-03T00:54:48.643 に答える
1

とった。

これが私のコードです:

$p = get_adjacent_post(1, '', 1);
if(!empty($p)) echo '<a class="prevpost" href="'.$p->guid.'" title="'.$p->post_title.'">&nbsp</a>';
$n = get_adjacent_post(1, '', 0);
if(!empty($n)) echo '<a class="nextpost" href="'.$n->guid.'" title="'.$n->post_title.'">&nbsp</a>';

この関数は、リンクの生成に使用できる前/次の投稿のオブジェクトを返します。最初のパラメーターは、同じ猫への投稿を制限するためのものです。
昨日、wordpress codex で数回検索しましたが、この関数に出くわすことができず、偶然見つけました。

誰かがより良い/より簡単な/より速い方法を持っている場合は、投稿して受け入れられた回答を得てください。

于 2012-07-08T12:16:25.493 に答える
0

ステップ 1 : function.php の下にこの関数を追加するだけです。

// its to ssolve single page next and previous liinks
# get_adjacent_post( $in_same_cat = false, $excluded_categories = '', $previous = true )
function echo_next_previous_post_link($fmg_name="link" ,$selector="next")
{  

if ($selector=="next") {
    $next_post_obj  = get_adjacent_post( '', '', false );
    $next_post_ID   = isset( $next_post_obj->ID ) ? $next_post_obj->ID : '';
    $next_post_link     = get_permalink( $next_post_ID );
    $next_post_title = get_the_title($next_post_ID);
    if ($fmg_name=="link") {
        echo $next_post_link ;
    }
    else {
        echo $next_post_title ;
    }
}
else {
    $previous_post_obj  = get_adjacent_post( '', '', true );
    $previous_post_ID   = isset( $previous_post_obj->ID ) ? $previous_post_obj->ID : '';
    $previous_post_link     = get_permalink( $previous_post_ID );
    $previous_post_title = get_the_title($previous_post_ID);
    if ($fmg_name=="link") {
        echo $previous_post_link ;
    }
    else {
        echo $previous_post_title ;
    }
}

}

ステップ 2 : 投稿の URL とタイトルを任意のページに印刷できるようになりました

<a href="<?php echo_next_previous_post_link("link","next"); ?>"><?php echo_next_previous_post_link("title","next"); ?></a>                            

<a href="<?php echo_next_previous_post_link("link","previous"); ?>"><?php echo_next_previous_post_link("title","previous"); ?></a>  
于 2021-08-18T14:57:59.580 に答える
-4
<?
echo '<a href="'.get_permalink( get_the_ID()-1 ).'" title="'.get_the_title( get_the_ID()-1 ).'">Previous</a>'; 
echo '<a href="'.get_permalink( get_the_ID()+1 ).'" title="'.get_the_title( get_the_ID()-1 ).'">Next</a>';

?>
于 2012-07-07T23:54:26.420 に答える