web-dev-qa-db-ja.com

現在のページを強調表示する動的サイドバーナビゲーション

私のサイドバーは、親ページに基づいてすべての子ページをループします。たとえば、[About]セクションにいる場合は、サイドバーに[About]の子ページしか表示されません。

私の問題は、私が現在のページを強調表示する方法がないということです。たとえば、 "Our Team"という子ページ( "About"の下)にいる場合、サイドバー "Our Team"に "current-page"クラスのタグリンクを付けます。

現在の子ページに動的に "current-page"クラスを追加する方法はありますか?

<?php 
if ( $post->post_parent == '4' ) {
    query_posts("post_type=page&post_parent=4&orderby=menu_order&order=asc"); 
} elseif ( $post->post_parent == '6' ) {
    query_posts("post_type=page&post_parent=6&orderby=menu_order&order=asc");
} elseif ( $post->post_parent == '8' ) {
    query_posts("post_type=page&post_parent=8&orderby=menu_order&order=asc"); 
} elseif ( $post->post_parent == '10' ) {
    query_posts("post_type=page&post_parent=10&orderby=menu_order&order=asc"); 
}
if ( have_posts() ) : while ( have_posts() ) : the_post();
?>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
...
1
Ryan

私はあなたがこれに苦労していることをここにそう見ます:

<?php 
    global $post;
    $curent_post = $post;
    $curent_post_id = $post->ID
    $parents = array('4','6','8','10');
    if (in_array($post->post_parent,$parents)){
        query_posts("post_type=page&post_parent=".$post->post_parent."&orderby=menu_order&order=asc"); 
    }
    if ( have_posts() ) : while ( have_posts() ) : the_post();
    ?>
    <a href="<?php the_permalink(); 
    if ($curent_post_id = $post->ID){
        echo ' class="highlight"';
    }
    ?>"><?php the_title(); ?></a>

そしてループの最後にaddを

wp_reset_query();
$post = $curent_post;

それ以降は、query_postsの代わりにWP_Queryを使用するようにしてください。そのページのメインクエリではありません。

そして戻ってきたらwp_list_pages()を使って投稿して例を示します

1
Bainternet