Dàng buộc Menu và đối tượng
Lấy dữ liệu menu (nav menu item) liên kết với trang/post hiện tại.
Hàm wp_get_nav_menu_items kế thừa tham số từ WP_Query. Đoạn code sau lựa chọn tất cả menu_items liên kết vào trang hiện tại từ menu bạn chỉ định vào biến $menu_id.
$menu = wp_get_nav_menu_items($menu_id,array(
'posts_per_page' => -1,
'meta_key' => '_menu_item_object_id',
'meta_value' => $post->ID // the currently displayed post
));
var_dump($menu[0]->ID);
|
Trong đó:
-
$menu_id: tên menu (trình đơn) bạn đặt khi tạo.
-
meta_value: post/page hiện tại bởi ID.
Ở hình trên ta có $menu_id = 'menu-left'.
Đối tượng trả về $menu chứa thông tin dữ liệu đối tượng có gán vào item được lựa chọn. Ví dụ nếu là kiểu page/post/custom post type.
WP_Post Object
(
[ID] => 4796
..
[post_title] => Hosting Cá Nhân
...
[post_name] => hosting-ca-nhan
...
[post_type] => nav_menu_item
...
[menu_item_parent] => 4320
[object_id] => 4785
[object] => page
[type] => post_type
[type_label] => Trang
[url] => http://www.hoangweb.com/hosting-gia-re
...
)
Dữ liệu gán vào menu item.
- Lấy post ID gán vào menu item xác định.
$post_id = get_post_meta( $menu_item_id, '_menu_item_object_id', true );
|
- Trả về kiểu dữ liệu post type xác định vào menu item.
$post_type = get_post_meta( $menu_item_id, '_menu_item_object', true );
|
- Lấy các thông tin khác liên quan đến menu item.
$custom = get_post_custom($menu_item_id);
|
kết quả mẫu:
Array
(
[_menu_item_type] => Array
(
[0] => taxonomy
)
[_menu_item_menu_item_parent] => Array
(
[0] => 25
)
[_menu_item_object_id] => Array
(
[0] => 9
)
[_menu_item_object] => Array
(
[0] => category
)
[_menu_item_target] => Array
(
[0] =>
)
[_menu_item_classes] => Array
(
[0] => a:1:{i:0;s:8:"hoa-chat";}
)
[_menu_item_xfn] => Array
(
[0] =>
)
[_menu_item_url] => Array
(
[0] =>
)
)
Ví dụ:
<?php
$menu=get_post($item_id);
$post_id = get_post_meta( $item_id, '_menu_item_object_id', true );
$post_type = get_post_meta( $item_id, '_menu_item_object', true );
if($post_type=='post' ){
$url=get_permalink($post_id);
}
if($post_type=='category'){
$url=get_category_link($post_id);
}
?>
<a href="<?php echo $url?>"><h2><?php _e($menu->post_title,'hoangweb')?></h2></a>
|