wp_nav_menu找到下一个,之前的链接

时间:2013-01-18 07:27:05

标签: wordpress pagination

我需要使用wp_nav_menu设置一些分页,所以我需要访问菜单中的上一个,当前和下一个项目。有什么想法吗?

2 个答案:

答案 0 :(得分:5)

好的,这就是我想出来的 - 它有效。

<?php
$menu_name = 'main-menu';
$locations = get_nav_menu_locations();
$menu = wp_get_nav_menu_object( $locations[ $menu_name ] );
$menuitems = wp_get_nav_menu_items( $menu->term_id, array( 'order' => 'DESC' ) );

$i=-1;
foreach ( $menuitems as $item ):

    $i++;

  $id = get_post_meta( $item->ID, '_menu_item_object_id', true );
  $page = get_page( $id );
  $link = get_page_link( $id );

    $linkarray.=$id.",";
    $urlarray.=$link.",";

  if ($id==$post->ID){
    $previd=$i-1;
    $nextid=$i+1;
  }
endforeach;

$linkarray=explode(',',$linkarray);
$urlarray=explode(',',$urlarray);

$nextid=$urlarray[$nextid];
if (empty($nextid)){
    $nextid=$urlarray[0];
}
$previd=$urlarray[$previd];
if (empty($previd)){
    $previd=$urlarray[$i];
}
?>

<a href="<?php echo $nextid; ?>">Next Item</a>
<a href="<?php echo $previd; ?>">Previous Item</a>

答案 1 :(得分:3)

我调整了之前的答案,在菜单中包含任何帖子项目(不仅仅是页面)。 此代码返回上一个和下一个帖子ID。

<?php
$current_post_id = $post->ID;
$menu_name = 'guide-menu-frontpage';
$locations = get_nav_menu_locations();
$menu = wp_get_nav_menu_object( $locations[ $menu_name ] );
$menuitems = wp_get_nav_menu_items( $menu->term_id, array( 'order' => 'DESC' ) );
$i = 0;

foreach ( $menuitems as $item ){
    $menuitems_id_array[] = $item->object_id;
    if ($item->object_id == $current_post_id){
        $prevMenuPosition = $i - 1;
        $nextMenuPosition = $i + 1;
    }
    $i++;
}

if($prevMenuPosition < 0){
    $prev_id = false;
} else {
    $prev_id = $menuitems_id_array[$prevMenuPosition];
}

if($nextMenuPosition > sizeof($menuitems_id_array) - 1){
    $next_id = false;
} else {
    $next_id = $menuitems_id_array[$nextMenuPosition];
}
?>