显示Post类型的所有标题,并在重定向时突出显示当前页面

时间:2017-09-15 08:10:35

标签: php wordpress

所以这是我的代码,它的工作是从帖子类型调用标题。所以对于这个样本,它调用这样的标题

标题I 标题II
标题II

这个列表也是链接,如果我点击" Title II"它重定向到正确的单页,但我的问题是它没有突出显示当前的单页。换句话说,我想让它看起来像这样:

标题I 标题II
标题II

但是我的代码结果是这样的:
标题I 标题II
标题II

下面是我的页面中的代码,这也是我单页中的代码。

<?php $args = array(  
        'post_type' => 'services',
        'posts_per_page' => -1
    );
             $the_query = new WP_Query( $args );?>
            <?php if ( have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
                <li>
                    <a href="<?php the_permalink()?>"><?php echo the_title(); ?></a>
                </li>
            <?php endwhile?>
            <?php endif; wp_reset_postdata();?>

2 个答案:

答案 0 :(得分:3)

您可能希望使用ID进行比较。请记住在循环之前获取当前ID

<?php 
// Remember to get ID before the loop to have current ID
$current_post_ID = get_the_ID();
$args = array(  
    'post_type' => 'services',
    'posts_per_page' => -1
);

$the_query = new WP_Query( $args );
?>
<?php if ( have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
    <li>
        <a <?php echo $current_post_ID === get_the_ID() ? 'class="active"' : '' ?> href="<?php the_permalink()?>"><?php echo the_title(); ?></a>
    </li>
<?php endwhile?>
<?php endif; wp_reset_postdata();?>

答案 1 :(得分:1)

您需要进行测试,以查看每篇帖子的链接是否与当前页面网址匹配。

<?php
global $wp;
$current_url = home_url( $wp->request ) . '/';

$args = array(
    'post_type' => 'services',
    'posts_per_page' => -1
);

$the_query = new WP_Query( $args ); ?>

<?php if ( have_posts() ) :
    while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
        <li <?php if ( $current_url == get_the_permalink() ) { echo 'class="active"'; } ?>>
            <a href="<?php the_permalink()?>"><?php echo the_title(); ?></a>
        </li>
    <?php endwhile; ?>
<?php endif; wp_reset_postdata(); ?>