如果当前页面与 wordpress 中的 li 名称匹配,则回显 class

Echo a class if current page matches the li name in wordpress

我正在尝试找到一些逻辑,仅当当前页面标题与 li 中的标题匹配时才会回显 class。我无法提出不适用于此查询中所有 li 的 'if' 语句。

这是在 wordpress 中。

上下文如下:

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
   <li><a href="<?php the_permalink(); ?>" <?php if(NEED LOGIC HERE) echo 'class="current"'; ?>><?php the_title(); ?></a></li>
<?php endwhile; wp_reset_query(); endif; ?>

如有任何帮助,我们将不胜感激!

如果您知道您在某种single页面(即页面,post或类似页面),那么我想您可以在您的自定义循环之前保存它的 ID 并与之进行比较:

global $post;
//Make sure you are on a single, otherwise you'll get funny results
if (is_single()) {
    $saved_id = $post->ID;
} else {
    $saved_id = false;
}

if (have_posts()) {
    while (have_posts()) {
        the_post();
        echo '<li><a href="' . get_the_permalink() . '"';
        if($saved_id === $post->ID) {
            echo 'class="current"';
        }
        echo '>';
        the_title();
        echo '</a></li>';
    }
    wp_reset_query();
 }

...抱歉完全改变了代码风格,我无法使用模板标签使其可读。

哦,当然你可以比较标题,如果这实际上更可取(虽然显然不太精确),只需使用 get_the_title()$post->post_title 而不是 $post-ID

好的,我明白了。我需要跳出循环来创建一个有效的 if 语句来读取查询中的 link 和当前页面。注意 $titleID.

<?php
    $titleID = (get_the_title());
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    $parentID = (wp_get_post_parent_id( $post_ID ));
    $args= array(
        'posts_per_page' => -1,
        'post_type' => 'page',
        'post_parent' => $parentID,
        'paged' => $paged
        );
        query_posts($args);
    ?>
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?> 
        <li><a href="<?php the_permalink(); ?>" <?php if(get_the_title() == $titleID ) echo 'class="current"'; ?>><?php the_title(); ?></a></li>            
    <?php endwhile; wp_reset_query(); endif; ?>