silver_kirさん、こんにちは。
$prevpost->IDが前の記事のID。
$nextpost->IDが次の記事のID。
タグはget_the_tag(id)でタグを取得できるようなので、1記事に1つだけなら下記のような感じでは出力されないでしょうか?
<?php echo get_the_tag($prevpost->ID); ?>
<?php echo get_the_tag($nextpost->ID); ?>
尚、通常はforeachを利用したほうが良さそうですね。
https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/get_the_tags
<?php
$posttags = get_the_tags();
if ( $posttags ) {
foreach ( $posttags as $tag ) {
echo $tag->name . ' ';
}
}
?>
so-taro さん、コメントありがとうございます。
<?php echo get_the_tag($prevpost->ID); ?>
<?php echo get_the_tag($nextpost->ID); ?>
こちらは上記ソース内に組み込みとエラーがでました。
組み込み方が悪いのかと試しに現在タイトルを読み込んでいる
. get_the_title($prevpost->ID) .
を
. get_the_tag($prevpost->ID) .
に差し替える形で組み入れてみても同様にエラーでした。
get_the_tagsにして組み入れた所エラーは出ませんがタグ情報が読み込めず「Array」が返されました。
こちらはひょっとしたらfunctions.phpも差し替えているためそちらにタグ関係の処理が入っていないのかもしれません。
>尚、通常はforeachを利用したほうが良さそうですね。
こちらの方は既存のソースへの組み込み方が分からず、色々と試してみましたがご提示いただいたのに活用できませんでした。
具体的な組込例など良ければお願いできませんでしょうか。
正当なやり方ではないですがこちらベースにCSSで小細工して目的に近い形にしてみました。
<?php
$posttags = get_the_tags();
if ( $posttags ) {
foreach ( $posttags as $tag ) {
echo $tag->name . ' ';
}
}
?>
以下ソースです。
<div id="prev_next" class="clearfix">
<?php
$prevpost = get_adjacent_post(true, '', true); //前の記事(同一カテゴリ)
$nextpost = get_adjacent_post(true, '', false); //次の記事(同一カテゴリ)
if( $prevpost or $nextpost ){ //前の記事、次の記事いずれか存在しているとき
?>
<?php
if ( $prevpost ) { //前の記事が存在しているとき
echo '<a href="' . get_permalink($prevpost->ID) . '" title="' . get_the_title($prevpost->ID) . '" id="prev" class="clearfix">
<div id="prev_title">PREV</div>
' . get_the_post_thumbnail($prevpost->ID, array(100,100)) . '
<p>' . get_the_title($prevpost->ID) . '</p></a>';
} else { //前の記事が存在しないとき
echo '<div id="prev_no"><a href="' .home_url('/'). '"><div id="prev_next_home"><i class="fa fa-home"></i>
</div></a></div>';
}
if ( $nextpost ) { //次の記事が存在しているとき
echo '<a href="' . get_permalink($nextpost->ID) . '" title="'. get_the_title($nextpost->ID) . '" id="next" class="clearfix">
<div id="next_title">NEXT</div>
' . get_the_post_thumbnail($nextpost->ID, array(100,100)) . '
<p>'. get_the_title($nextpost->ID) . '</p></a>';
} else { //次の記事が存在しないとき
echo '<div id="next_no"><a href="' .home_url('/'). '"><div id="prev_next_home"><i class="fa fa-home"></i>
</div></a></div>';
}
?>
<ul class="prev_next-tag">
<li>
<div>
<?php
if ( $prevpost ) { //前の記事が存在しているとき
$posttags = get_the_tags($prevpost->ID);
if ( $posttags ) {
foreach ( $posttags as $tag ) {
echo $tag->name . ' ';
}
}
} else { //前の記事が存在しないとき
}
?>
</div>
</li>
<li>
<div>
<?php
if ( $nextpost ) { //次の記事が存在しているとき
$posttags = get_the_tags($nextpost->ID);
if ( $posttags ) {
foreach ( $posttags as $tag ) {
echo $tag->name . ' ';
}
}
} else { //次の記事が存在しないとき
}
?>
</div>
</li>
</ul>
<?php } ?>
</div>
本当は前後記事リンクの中で組み込むのが良いのでしょうが、上手くできなかったため別の場所で読み込んでCSSで重ねることで目的に近い形としました。
silver_kirさん、おはようございます。
本当は前後記事リンクの中で組み込むのが良いのでしょうが
というのがわかりづらいので、前後記事のリンク内にタグの文字を追加したいということだとすると、作成頂いたコードの上の方に、変数とタグ取得のコードを置いて、利用したいところでechoする形では難しいでしょうか?
あいかわらずざっくりで恐縮ですが…
<?php
$prevpost = get_adjacent_post(true, '', true); //前の記事(同一カテゴリ)
$nextpost = get_adjacent_post(true, '', false); //次の記事(同一カテゴリ)
if( $prevpost or $nextpost ){ //前の記事、次の記事いずれか存在しているとき
//------▼追加▼--------------------
$posttags = get_the_tags($prevpost->ID);
if ( $posttags ) {
foreach ( $posttags as $tag ) {
$pretag = $tag->name;
}
}
みたいな感じで
//------▲追加▲--------------------
if ( $prevpost ) { //前の記事が存在しているとき
・
・
・
//------▼必要なところで追加▼--------------------
echo $pretag;//配列になっているかもしれないので適宜変更
//------▲追加▲--------------------