やりたいことの実現の前にご提示いただいた現在のコードが正しい形になっていないようなので、以下の形が基本形となるようにしましょう。
<?php
$myposts = get_posts('category=21 & showposts=30 & order=ASC');
foreach($myposts as $post) : setup_postdata($post); ?>
<?php the_title(); ?>
<?php endforeach; wp_reset_postdata(); ?>
本題の記事タイトルハイライトについてですが、
やりたいこと:
特定のカテゴリに属する記事タイトル一覧をサイドバーに表示させているのですが
現在表示させている記事を開いている時にサイドバーのタイトル部分をハイライトしたいです
この内容を実現するためのステップは以下の通りです。
1.現在表示中のページが記事詳細ページの場合、その記事のIDを変数に入れておく。
2.一旦保持してある変数とget_post()で得た記事のIDを比較していき、同一のIDがあった場合、タイトルのclassにcurrentを付加する。
このステップをコード化すると以下のようになります。
<?php
if(is_single()) { $current_id = get_the_ID(); } //投稿記事詳細ページの場合のみIDを取得
$myposts = get_posts('category=21 & showposts=30 & order=ASC');
foreach($myposts as $post) : setup_postdata($post);
if(isset($current_id) && ($current_id == $post->ID)) { //$current_idと同一の投稿IDだった場合
the_title('<span class="current"">','</span>'); //classにcurrentを付与(ここは任意に変更してください)
} else {
the_title();
}
endforeach;
wp_reset_postdata();
?>
mocomocoさん、ご丁寧な回答ありがとうございます。
コードが正しい形になっていなかったこと、ご指摘大変ありがたいです。
教えていただいたコードで無事表示中のタイトルにcurrentを追加することが出来ました。
しかし、PHPは勉強中でして、きっとものすごく初歩的なことで申し訳ないのですが、
リンク付きのリストにしたいと思っておりまして、
今までは “><?php the_title(); ?> で
リンクをつないでいたのですが、それをどういただいたコードに入れ込むのか分かりませんでした。
勉強不足で大変恐縮ですが、再度ご教授いただけませんでしょうか。
すみません、<a>タグが消えてしまうのですね。
今までは、<a href=”<?php the_permalink(); ?>”><?php the_title(); ?></a>でリンクをつないでいました。
コード(htmlタグなど)を投稿するときは逆クォートで囲むようにしてください。
(コード部分を選択してcodeボタンをクリックでOKです。)
phpからの出力にはechoやヒアドキュメントを使うなどの方法がありますが、
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
のようにphpとhtmlを切り替える方法もよくあるパターンですね。
http://php.net/manual/ja/language.basic-syntax.phpmode.php
同様のパターンでhtml部分を記述する前にphpの終了タグを記述し、
html部分を抜けたらphp開始タグを記述すればよいのです。
今回の例だと、
<?php
if(is_single()) { $current_id = get_the_ID(); } //投稿記事詳細ページの場合のみIDを取得
$myposts = get_posts('category=21 & showposts=30 & order=ASC');
foreach($myposts as $post) : setup_postdata($post);
if(isset($current_id) && ($current_id == $post->ID)) { //$current_idと同一の投稿IDだった場合
?>
<a href="<?php the_permalink(); ?>"><?php the_title('<span class="current"">','</span>'); ?></a>
<?php } else { ?>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php }
endforeach;
wp_reset_postdata();
?>
こんな感じになります。
mocomocoさん、重ねてお礼申し上げます。
ご教授いただいたもので見事やりたいことを実現できました!
ずっと悩んでいたので大変助かりました。
本当にありがとうございました。