【问题标题】:Add active class to the menu item - not menu created with wordpress, custom menu将活动类添加到菜单项 - 不是使用 wordpress 创建的菜单,自定义菜单
【发布时间】:2015-04-13 14:00:29
【问题描述】:

我有一个使用此代码创建的菜单

                   <?php
                      $pages = get_pages('child_of= 8&sort_column=post_date&sort_order=asc&parent=8');
                      foreach($pages as $page) {  
                    ?>
                     <li><a href="<?php $permalink = get_permalink($page->ID);
                        echo $permalink ; ?>"><?php echo $page->post_title ?></a></li>
                    <?php } ?>

有了这个,我得到了 Main about Page 的子页面。我需要根据我所在的页面(使用上面的代码创建的菜单)在这些项目中添加活动类。

【问题讨论】:

标签: wordpress menu


【解决方案1】:

您可以简单地使用 is_page() 来测试用户是否访问了菜单中的活动页面:

 <?php
 $pages = get_pages('child_of= 8&sort_column=post_date&sort_order=asc&parent=8');

 foreach ( $pages as $page ) {
    if ( is_page( $page->ID ) ) {
        $active = 'class="active"';
    } else {
        $active = '';
    }
    echo '<li '.$active.'><a href="'.get_permalink($page->ID).'">'.$page->post_title.'</a></li>';
 }
 ?>

【讨论】:

  • 它正在工作,但我收到一个错误警告:preg_match() 期望参数 2 是字符串,在 /home/ipoint99/public_html/imc/wp-includes/post-template.php 中给出的对象在第 254 行可捕获的致命错误:WP_Post 类的对象无法在第 272 行的 /home/ipoint99/public_html/imc/wp-includes/post-template.php 中转换为字符串
  • 你能帮我解决这个@Vincent Bocquet 吗?
【解决方案2】:

将此添加到您的&lt;li&gt;(或&lt;a&gt;,如您所愿)标签中:

<?php if ( get_the_ID() == $page->ID ) echo ' class="active"'; ?>

【讨论】:

  • 谢谢@Sebastien!这也是一个解决方案
【解决方案3】:

您将希望在 class='' 中使用以下行

If(get_the_ID()==$page->ID) echo 'class="active"';

【讨论】:

  • ID 必须大写,不要忘记回显中的空格 + 类属性!
猜你喜欢
  • 2012-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-23
  • 2018-08-02
  • 2019-11-09
  • 2021-08-14
相关资源
最近更新 更多