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

时间:2015-06-25 17:57:36

标签: php wordpress class if-statement echo

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

这是在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; ?>

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

如果您知道您某种single(即页面,帖子或类似内容),那么我想您可以在自定义之前保存该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

答案 1 :(得分:0)

好的,我明白了。我需要在循环之外创建一个有效的if语句来读取查询和当前页面中的链接。注意$ 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; ?>