- shares
- Facebook Messenger
- Gmail
- Viber
- Skype
Khi bạn lấy nội dung của nav_menu_item trong wp_nav_menu bởi hàm lấy dữ liệu post, VD get_posts nó chỉ trả về thông tin của item, còn những thông tin liên quan đến item như post type liên kết vào menu item thì làm sao để lấy chúng. Những dữ liệu liên kết đó gọi là custom fields.
Ví dụ bạn muốn lấy ID của trang có thể là một trong các kiểu (post/page/category/taxonomy/custom post type) liên kết với menu item không phải ID của nav_menu_item nhé, chúng ta có field ‘_menu_item_object_id’.
get_post_meta( $menu_item_id, '_menu_item_object_id', true );
Hay xác định post_type của trang menu, bạn sử dụng meta ‘_menu_item_object’
get_post_meta( $menu_item_id, '_menu_item_object', true );
Bạn cũng có thể lất toàn bộ fields khác của item với hàm get_post_custom
get_post_custom($menu_item);
Kết quả trả về mảng fields giống như sau:
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] => ) )
Tùy theo mục đích sử dụng những thông tin field này, ví dụ chúng ta tạo link URL cho menu item căn cứ vào post_type liên kết với menu đó. Xem ví dụ dưới đây:
<?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>
Chúc bạn thành công!
Nếu bạn thích bài viết này, hãy ủng hộ chúng tôi bằng cách đăng ký nhận bài viết mới ở bên dưới và đừng quên chia sẻ kiến thức này với bạn bè của bạn nhé. Bạn cũng có thể theo dõi blog này trên Twitter và Facebook
- shares
- Facebook Messenger
- Gmail
- Viber
- Skype