列出自定义帖子类型并突出显示当前访问的项

时间:2014-09-07 14:01:08

标签: php css wordpress

我有一个名为' product'的自定义帖子类型。在每个产品页面上,我希望有一个侧栏,列出所有产品。侧栏中的当前产品应加下划线。

例如,在访问产品3时,应突出显示产品3:

  

侧边栏

产品1
产品2
  产品3
产品4

我认为解决方案可以是包含所有产品的wp菜单,然后使用.current-menu-item类来实现突出显示。但是,在创建新产品时,必须自动更新侧边栏。

以下是我列出所有产品的方式。有没有一种集成.current-menu-item功能的方法?

<?php $loop = new WP_Query( array( 'post_type' => 'product' ) ); ?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>

<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>

<?php endwhile; ?>

通过添加这样的类?

<a class="current-product" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>

1 个答案:

答案 0 :(得分:1)

是的,有一种简单的方法可以实现这一目标。

以下是修改版本的代码:

<?php 
// get the current product ID
$current_post_id = get_the_ID();

$loop = new WP_Query( array( 'post_type' => 'product' ) );
while ( $loop->have_posts() ) {
    $loop->the_post(); 
    ?>
    <a href="<?php the_permalink(); ?>" <?php echo get_the_ID() == $current_post_id ? 'class="current-product"' : ''; ?>><?php the_title(); ?></a>
    <?php 
}
?>

这里我们基本上将当前产品的ID保存在变量中,然后对于列表中的每个产品,我们检查循环产品ID是否等于当前产品ID。如果是,我们会显示class="current-product"属性。