Ngày đăng: 18/07/2014 13:26 PM
Thiết kế website bằng wordpress giúp bạn hiển thị nội dung của child page đầu tiên khi nhấn vào parent page, dành cho chức năng page trong wordpress.
Một ví dụ cho những người làm website bằng wordpres có thể hình dung được cái gì đang diễn ra trong bài viết này.
Displaying first child page content on parent page
Lấy nội dung bài viết đầu tiên của trang cho
Bạn có một menu, trong menu có một menu giới thiệu, trong menu giới thiệu có các trang như: giới thiệu chung, lịch sử hình thành, tầm nhìn & xứ mệnh …. Menu được bố trí như sau:
Giới thiệu
   – Giới thiệu chung
   – Lịch sử hình thành
   – Tầm nhìn & Xứ mệnh.
   – ….
Khi click vào menu giới thiệu chung sẽ ra bài viết của trang này và các trang khác cũng tương tự, nhưng có một vấn đề khi click vào trang giới thiệu thì sẽ trường hợp xảy ra
Một là, lấy nội dung của chính nó (nội dung của trang giới thiệu)
Hai là, lấy nội dung của trang con đầu tiên (nội dung của trang “giới thiệu chung”)
Với trường hợp 1: chẳng làm gì cả vì cách hoạt động cũng giống như các trang khác, wordpress đã hỗ trợ sẵn.
Với trường hợp 2: bạn làm thế nào ? Tìm ID của trang đầu tiên sau đó lấy nội dung của page từ ID này. Cách này có vẻ hợp lý đó chứ, nhưng về CSS thì sao ? theo như đúng hình thức thì: trang nào được chọn sẽ có CSS active như vậy trong trường hợp này có 2 menu được active: 1 menu cha (menu giới thiệu), 1 menu con (menu Giới thiệu chung).
Tham khỏa đoạn code này, công việc của bạn sẽ nhẹ nhàng đi rất nhiều. Đoạn code dưới bạn thêm vào file functions.php
function first_child($pid) {
    $children = get_pages(“child_of=” . $pid . “&sort_column=menu_order”);
    if ($children) {
        $firstchild = $children[0];
        return $firstchild->ID;
    } else {
        return false;
    }
}

add_action(‘pre_get_posts’, ‘replace_content_with_child’);

function replace_content_with_child($query) {
    $firstchild = first_child($query->queried_object_id);
    if ($query->is_main_query() && !is_admin() && is_page() && $firstchild) {
        $query->query_vars[‘page_id’] = $firstchild;
    }
}