簡體   English   中英

如何在WordPress中回顯自定義菜單的目標屬性

[英]How to echo the target attribute of custom menu in WordPress

以下代碼組成一個自定義菜單:

   <ul class="nav navbar-nav">
        <?php
          $menu = wp_get_nav_menu_items_hierarchically( 'Menu' ); 
          foreach($menu as $toplevel):
            $hasChildren = !empty($toplevel['children']);
        ?>
          <li<?php if($hasChildren) echo ' class="dropdown"'; ?>>
            <a href="<?php echo $toplevel['url'] ?>"<?php if($hasChildren) echo ' class="dropdown-toggle" role="button" aria-haspopup="true" aria-expanded="false"'; ?>>
              <?php echo $toplevel['title'] ?>
            </a>
            <?php if($hasChildren): ?>
              <ul class="dropdown-menu">
              <?php foreach($toplevel['children'] as $child): ?>
                <li><a href="<?php echo $child['url']; ?>"><?php echo $child['title']; ?></a></li>
              <?php endforeach; ?>
              </ul>
            <?php endif; ?>
          </li>
        <?php
          endforeach;
        ?>
        </ul>

但是此代碼不會檢索target屬性。 因此,如果選中此選項:

“在新標簽頁中打開鏈接”復選框

上面的代碼將忽略該設置,並且將在同一標簽中保持打開狀態。 我應該怎么做才能獲取菜單項的目標值? 我嘗試使用$child['target'] ,但是此字段不存在...

更新資料

這是wp_get_nav_menu_items_hierarchically的代碼:

function wp_get_nav_menu_items_hierarchically( $menu ) {
  $menu_items        =  wp_get_nav_menu_items( $menu );
  $hierarchical_menu = array();

  foreach ($menu_items as $item) {
    if( !$item->menu_item_parent ) {
      $hierarchical_menu[$item->ID]['title'] = $item->title;
      $hierarchical_menu[$item->ID]['url'] = $item->url;
      $hierarchical_menu[$item->ID]['attr_title'] = $item->attr_title;
    } else {
      $hierarchical_menu[$item->menu_item_parent]['children'][$item->object_id]['title'] = $item->title;
      $hierarchical_menu[$item->menu_item_parent]['children'][$item->object_id]['url'] = $item->url;
    }
  }

  return $hierarchical_menu;
}

嘗試使用get_post_meta($child['ID'],'_menu_item_target',true)獲取菜單項的target屬性。

更新:

為了能夠訪問$ child ['target']屬性,您應該通過if ... else ...語句在內部獲取此屬性來更改wp_get_nav_menu_items_hierarchically函數:

if( !$item->menu_item_parent ) {
    ...
    $hierarchical_menu[$item->ID]['target'] = $item->tartget;
} else {
    ...
    $hierarchical_menu[$item->menu_item_parent]['children'][$item->object_id]['target'] = $item->target;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM