如何列出带有缩略图的页面,添加“Current-Item”类

时间:2017-07-03 作者:Tiago

我正在使用get_pages() 创建一个自定义导航,其中列出每个页面的链接、标题和缩略图。如何将“current item”类添加到与当前页面对应的项目中?

我正在使用以下代码:

<?php
    $our_pages = get_pages( array( \'sort_column\' => \'menu_order\' ) );
    foreach ($our_pages as $key => $page_item):
?>
    <div class="menu-item">
        <a href="<?php echo esc_url(get_permalink($page_item->ID)); ?>" class="menu-item-clicker"><span><?php echo $page_item->post_title ; ?></span></a>
        <?php echo get_the_post_thumbnail($page_item->ID,\'full\'); ?>
    </div>
<?php endforeach; ?>
下面没有显示该类,但为了说明我正在尝试做什么,下面是我尝试的条件,但没有成功:

<?php
    $our_pages = get_pages( array( \'sort_column\' => \'menu_order\' ) );
    foreach ($our_pages as $key => $page_item) :
        if($page->ID == $page_item->ID) {
            $class = \'current-item\';
        }
?>
    <div class="menu-item <?php echo $class; ?>">
        <a href="<?php echo esc_url(get_permalink($page_item->ID)); ?>" class="menu-item-clicker"><span><?php echo $page_item->post_title ; ?></span></a>
        <?php echo get_the_post_thumbnail($page_item->ID,\'full\'); ?>
    </div>
<?php endforeach; ?>
期待您的意见!

2 个回复
最合适的回答,由SO网友:Junaid 整理而成

通过$page->ID, 我想你是想ID 当前页面的,对吗?如果是这样,那就错了。页面本身是post type 所以你需要通过$post->ID 确保$post 可访问,否则使用get_the_ID() 返回当前帖子/页面的ID。

最终代码:

<?php

$our_pages = get_pages( array( \'sort_column\' => \'menu_order\' ) );
foreach ($our_pages as $key => $page_item) :
    $class = \'\';
    if($post->ID == $page_item->ID)
        $class = \'current-item\';

?>
    <div class="menu-item <?php echo $class; ?>">
        <a href="<?php echo esc_url(get_permalink($page_item->ID)); ?>" class="menu-item-clicker">
            <span><?php echo $page_item->post_title ; ?></span>
        </a>
        <?php echo get_the_post_thumbnail($page_item->ID,\'full\'); ?>
    </div>
<?php endforeach; ?>

SO网友:Luckyfella

只是关于@Junaid Ahmed的回答的补充信息:

您可以添加此before 使命感$post->ID:

global $post;

结束