如果当前页面与 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; ?>
我正在尝试找到一些逻辑,仅当当前页面标题与 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; ?>