我正在跑步wp_list_pages
通过while循环创建自定义菜单。通过循环运行它,我可以针对特定的元素进行显示。我需要弄清楚如何针对wp_list_pages
或者将自定义活动页面类应用于my while循环生成的列表。
这是我正在使用的代码:
<?php echo \'<ul>\';
$args = array(
\'post_type\' => \'page\',
\'post_status\' => \'publish\',
\'posts_per_page\' => -1,
\'post_parent\' => $post->post_parent,
);
$query = new WP_Query($args);
while ($query->have_posts()) {
$query->the_post();
$child = get_pages(\'child_of=\'.$post->ID);
if( count( $child ) != 0 ) : ?>
<li class="has-children"><span><?php the_title(); ?></span>
<?php $children = wp_list_pages( \'title_li=&child_of=\'.$post->ID.\'&echo=0\' );
if ( $children) : ?>
<ul class="children">
<li><a href="<?php the_permalink(); ?>">Overview</a></li>
<?php echo $children; ?>
</ul>
<?php endif; ?>
</li>
<?php else : ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php endif;
}
echo \'</ul>\'; ?>
如果在第2.2页(注意类
current_page_item
) :
<ul>
<li><a href="http://website.com/page-1">Page 1</a></li>
<li class="has-children"><span>Page 2</span>
<ul class="children">
<li><a href="http://website.com/page-2">Overview</a></li>
<li class="page_item page-item-115"><a href="http://website.com/page-2/page-2-1">Page 2.1</a></li>
<li class="page_item page-item-116 current_page_item"><a href="http://website.com/page-2/page-2-2">Page 2.2</a></li>
</ul>
</li>
<li><a href="http://website.com/page-3">Page 3</a></li>
<li><a href="http://website.com/page-4">Page 4</a></li>
如果在第1页,则输出为(请注意,没有表示活动页的类):
<ul>
<li><a href="http://website.com/page-1">Page 1</a></li>
<li class="has-children"><span>Page 2</span>
<ul class="children">
<li><a href="http://website.com/page-2">Overview</a></li>
<li class="page_item page-item-115"><a href="http://website.com/page-2/page-2-1">Page 2.1</a></li>
<li class="page_item page-item-116"><a href="http://website.com/page-2/page-2-2">Page 2.2</a></li>
</ul>
</li>
<li><a href="http://website.com/page-3">Page 3</a></li>
<li><a href="http://website.com/page-4">Page 4</a></li>
你会注意到李在我的第二个
<ul>
上课
current_page_item
如果在那页上,因为我完全依赖
wp_list_pages
生成列表。我想找到一种方法来添加
active
类到第一个
<ul>
如果其中一个是li的是当前页面或目标类
wp_list_pages
动态创建。
最合适的回答,由SO网友:Heather 整理而成
在此处找到答案:Add class to the items in wp_list_pages
只需添加<?php if(is_page($post->ID )) {?> class="current_page_item" <?php }?>
. 我把它添加到<li>
第二层包含我的概述链接<ul class="children">
以及<li>
在顶层<ul>
如果页面没有子级。
<?php echo \'<ul>\';
$args = array(
\'post_type\' => \'page\',
\'post_status\' => \'publish\',
\'posts_per_page\' => -1,
\'post_parent\' => $post->post_parent,
);
$query = new WP_Query($args);
while ($query->have_posts()) {
$query->the_post();
$child = get_pages(\'child_of=\'.$post->ID);
if( count( $child ) != 0 ) : ?>
<li class="has-children"><span><?php the_title(); ?></span>
<?php $children = wp_list_pages( \'title_li=&child_of=\'.$post->ID.\'&echo=0\' );
if ( $children) : ?>
<ul class="children">
<li <?php if(is_page($post->ID )) {?> class="current_page_item" <?php }?>><a href="<?php the_permalink(); ?>">Overview</a></li>
<?php echo $children; ?>
</ul>
<?php endif; ?>
</li>
<?php else : ?>
<li <?php if(is_page($post->ID )) {?> class="current_page_item" <?php }?>><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php endif;
}
echo \'</ul>\'; ?>