wp_nav_menuを使用してページ付けを設定する必要があるため、メニューの前、現在、次の項目にアクセスする必要があります。何か案は?
質問する
1774 次
2 に答える
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>
于 2013-01-20T00:03:03.173 に答える
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];
}
?>
于 2016-11-01T15:32:11.683 に答える