导航菜单当前项目不高

时间:2016-02-05 10:12:33

标签: php wordpress menuitem nav

我正在使用类别作为主菜单的网站上工作。我有一个新的帖子类型,并添加了一个存档内容作为菜单项,带有标签'城市指南'。现在我在城市指南页面上的菜单项目不突出显示。或者使用代码,班级'当前'没有在菜单项class中打印。这是我的代码:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/prateek/Desktop/Programs/ML/lib/python2.7/site-packages/sklearn/svm/base.py", line 193, in fit
    fit(X, y, sample_weight, solver_type, kernel, random_seed=seed)
  File "/Users/prateek/Desktop/Programs/ML/lib/python2.7/site-packages/sklearn/svm/base.py", line 251, in _dense_fit
    max_iter=self.max_iter, random_seed=random_seed)
  File "sklearn/svm/libsvm.pyx", line 187, in sklearn.svm.libsvm.fit (sklearn/svm/libsvm.c:2098)
ValueError: specified nu is infeasible

如何使用条件在上面的代码中为我的存档页面菜单项添加当前值来实现它。

我试过

 <?php
$menu_name = PRIMARY_NAVIGATION_NAME;
$menu_items = array();
if( ( $locations = get_nav_menu_locations() ) && isset( $locations[ $menu_name ] ) ){
  $menu = wp_get_nav_menu_object( $locations[ $menu_name ] );
  $menu_items = $menu ? wp_get_nav_menu_items($menu->term_id) : array();
}
?>
<nav class="visible-sm visible-md visible-lg" role="navigation">
  <ul id="menu-primary-navigation" class="main-navigation">
    <?php if( !empty($menu_items) ): ?>
      <?php
      $current_category_object = null;
      if( !empty($wp_query->query_vars['category_name']) ){
        $category_name = $wp_query->query_vars['category_name'];
        $current_category_object = get_category_by_slug($wp_query->query_vars['category_name']);
      }
      ?>
      <?php foreach( $menu_items as $item): ?>
        <?php
        $active_class = false;
        if ($item->object == 'category' && !empty($current_category_object) ){
          $cat_object = get_category($item->object_id);
          if ($cat_object->term_id == $current_category_object->term_id || $cat_object->term_id == $current_category_object->parent) {
            $active_class = true;
          }
        }
        ?>
        <li class="<?php echo sanitize_title($item->title); ?><?php echo ' menu-item-object-category'; if ($active_class) echo ' current'?>">
          <a href="<?php echo $item->url; ?>" class="main-category"<?php if( $item->target) echo ' target="' . $item->target . '"'; ?>><?php echo $item->title ?></a>
          <?php if( $item->object == 'category'): ?>
            <?php
            $sub_categories = get_terms( array('category'), array('child_of' => $item->object_id, 'hide_empty' => 0) );
            if (count($sub_categories) <= 4) {
              include(locate_template('partials/sub-menu-two-featured.php'));
            } else {
              include(locate_template('partials/sub-menu-one-featured.php'));
            }
            ?>
          <?php endif; ?>

          <?php if ($item->title == 'City Guide'): ?>
            <?php include(locate_template('partials/sub-menu-city-guide.php')); ?>
          <?php endif; ?>
        </li>
        <?php wp_reset_query(); ?>
      <?php endforeach; ?>
    <?php endif; ?>
  </ul>
</nav>

但它在所有实例中都回显,而不是在菜单处于活动状态时。 请帮忙。

2 个答案:

答案 0 :(得分:1)

一种可能的解决方案是使用get queried object()函数Codex

Codex说

  

如果您在一个帖子上,它将返回帖子对象
  如果你在一个页面上,它将返回页面对象
  如果您在存档页面上,它将返回帖子类型对象
  如果您在类别存档中,它将返回类别对象
  如果您在作者档案中,它将返回作者对象

如果您开始使用$qo = get_queried_object(),则无需使用此代码

if( !empty($wp_query->query_vars['category_name']) ){
    $category_name = $wp_query->query_vars['category_name'];
    $current_category_object = get_category_by_slug($wp_query->query_vars['category_name']);
}

因为如果您在类别归档页面中,$qo将包含类别对象,$qo->term_id$qo->parent将可用。

如果您在CPT存档页面中,则$qo将包含CPT对象,并且CPT namequery_varlabel等属性将可用。

因此,如果您拥有自定义查询对象,并且在某些conditional_tags conditional tags的帮助下,例如is_tax()is_tag()is_category()is_post_type_archive()你将能够准确地确定你的位置。

P.S。您必须首先检查codex,因为在使用get_queried_object()

时有一些优先注意事项

答案 1 :(得分:0)

<?php
$active_class = false;
        $this_category = get_queried_object();
$this_category->name;
if ($this_category->name == 'city-guide' ){
 $active_class = true;
          } ?>
<li class="<?php echo sanitize_title($item->title); ?><?php echo ' menu-item-object-category'; if ($active_class ==1 && sanitize_title($item->title) =='city-guide') echo ' current'; ?>">

这非常感谢@pgk指出我