Home WordpressWordPress cơ bản [WordPress] Lấy dữ liệu post_type liên kết với nav_menu_item

[WordPress] Lấy dữ liệu post_type liên kết với nav_menu_item

by admincp

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!

Hãy cho mình biết suy nghĩ của bạn trong phần bình luận bên dưới bài viết này. Hãy theo dõi kênh chia sẻ kiến thức WordPress của Vinastar trên TwitterFacebook

Liên hệ

Công ty chuyên Thiết kế website uy tín nhất Miền Bắc: http://vinastar.net

Hotline tư vấn: 0989 48 3456

Nguồn: Sưu tầm trên internet

You may also like

Leave a Comment