メインループ内で個別記事のIDを $current_post_id などに代入しておき、サブループ内でIDの照合を行えば、十分可能かと思われます。
こんにちは
クラスを追加しなくても、CSSの属性セレクタを使うと 個別投稿記事のなかの、表示中の記事へのリンクにスタイルを指定する事は可能です。
例
function current_post_hilight() {
global $post, $wp_styles;
if ( is_singular() ) {
$current_url = get_permalink( $post->ID );
$inline_style = 'a[href="' . $current_url . '"]{color:red!important;}';
wp_add_inline_style( 'style', $inline_style );
}
}
add_action( 'wp_print_styles', 'current_post_hilight' );
サイドバーに、最近の投稿ウィジェットを置いて、個別投稿記事で、サイドバーのリンク色を変更できるか確認してみましたが OKでした。
テストなので、実用にする場合は、!importantは外して、適切なセレクタに置き換えてください。
‘wp_add_inline_style( ‘style’,`のハンドル名 styleはテーマによって異なるかもしれないので、チェックしてください
<link rel='stylesheet' id='style-css' href='http://example.com/wp/wp-content/themes/raindrops/style.css?ver=1.412' type='text/css' media='all' />
idの値から -cssを除いたものがハンドル名です。
jim912様
ありがとうございます。
ご指摘の通り、メインループで個別記事の情報を入手し、サブループで照合をする、という流れで検証していたのですが、どうもうまくいかなかったので投稿させていただきました。
もう少し自力でできるか確認してみてから、それでもできなかった場合は、こちらで具体的な内容を載せて、また質問させていただきます。
nobita様
ありがとうございます。
ご指示いただいた「function…」をfunction.phpにコピペして確認したのですが、こちらの理解不足もあり、うまく動作しませんでした。
また、私の質問文がわかりにくかったのかもしれませんので、改めてこちらが希望する内容を記述します。
single.phpにて、メインループで個別記事Aを表示しています。
また、同ページ内のサイドバーには、個別記事Aと同じカテゴリーの記事(B〜)へのリンクも載せています。
リンクの表示では、Aを省いたリンクを載せるかもしれませんが、あえてAのリンクも残しているため、現在メインループで表示中の記事だと分かりやすいように、色を変えたいと思っています。
具体的には、<li class=”current”>というクラス名が付けられればと希望しています。
グローバルメニューでは自動的にcurrent-などと付くため、CSSで色を変えることができるので、サブループでのリストもそのようにできないか確認しているところでした。
ご指摘いただいた「function…」をfunction.phpに追記するだけで、リストにクラス名が付くと思っていたのですが、違うようですね。理解不足で申し訳ありません。
悩ませてしまったみたいですね。忘れてください :)
jim912さんの回答に沿って進めていただくといいと思います。
言いたかったことは、<li class="current">
とクラスを設定しなくても、
a[href="http://個別投稿記事のURL"]{
プロパティ:値;
}
という形でスタイルを指定する事も出来るので、クラスを追加しないで、フックを使って処理しませんか?
という事でした。
なんで、直接の答えではなく、代替案を書いたかというと、質問ではサブループのお話でしたが、ワードプレスの例えば、月次アーカイブや、最近の投稿ウィジェット、タグクラウドウィジェットも、同じような問題を持っているため、「たぶん、そういうのも気になってくるんだろうなぁ」と思ったので、個別投稿とおんなじURLでリンクしている奴も、まとめて処理できる方法を提案してみた というわけでした。
お騒がせしました。