Tạo trang cha mẹ Dummy xếp hạng phân cấp trong danh sách trang?


7

Có thể thiết lập một trang "giả" - chỉ một tiêu đề trang xuất hiện trong danh sách trang và một trang không thể chỉnh sửa và không có sên?

Đây là một câu hỏi giả định, vì tôi không biết bắt đầu từ đâu với mã hoặc xác định cách tốt nhất để đi.

Tôi muốn có tùy chọn thiết lập hệ thống phân cấp cha / con như vậy trong danh sách trang để các trang con nằm dưới cha mẹ, nhưng trang cha mẹ chỉ là một trình giữ chỗ chứ không phải trang thật.

Lý do: đối với người dùng không có nhiều kinh nghiệm về WordPress, việc tổ chức các trang theo phân cấp cha / con là rất hữu ích - đặc biệt là nếu có nhiều trang - để các trang liên quan được sắp xếp nhiều hơn trong danh sách trang. Người dùng cũng có thể hình dung việc xây dựng một menu, nếu các trang con được tổ chức theo cha mẹ. Vấn đề là trang mẹ có thể chỉnh sửa và không phải là một phần của nội dung trang đã thiết lập và theo kinh nghiệm của tôi, điều này dẫn đến sự nhầm lẫn của người dùng.

Tôi có thể sử dụng một chức năng để xóa trình chỉnh sửa cho một trang cụ thể và sử dụng các quyền trong tệp robots.txt để không lập chỉ mục cho phụ huynh giả, nhưng điều đó có nghĩa là thay đổi các trình soạn thảo cho cha mẹ mới. Và trang mẹ đó vẫn có một con sên, ngay cả khi bị chặn

Vì vậy, có cách nào để tạo một chức năng tạo tiêu đề trang và với khả năng gán các trang con, nhưng trang cha mẹ không thể mở được, không thể chỉnh sửa và không có sên?

nhập mô tả hình ảnh ở đây


1
"... một tiêu đề trang và với khả năng gán các trang con, nhưng có trang cha không thể mở được, không thể chỉnh sửa và không có sên?" - nghe rất giống một loại bài tùy chỉnh.
s_ha_dum

Tôi không nghĩ có một cách để loại bỏ sên. Tôi quên nếu bạn có thể hiển thị nó trong quản trị viên nhưng ẩn nó khỏi front-end, nếu vậy bạn có thể sử dụng một số javascript ở back-end để xóa liên kết.
Wyck

Bạn có thể thử và đặt 'rewrite' => array('slug' => 'false'cho CPT hoặc đặt thành /hoặc #đáng để thử
Wyck

s_ha_dum và Wyck: CPT, ý kiến ​​hay; Tôi sẽ xem xét điều đó. Vì vậy, các trang không phải CPT - trang WP thông thường - có thể là con của CPT không?
markratledge

Tôi không nghĩ như vậy mà không có một số hack lớn xung quanh.
Wyck

Câu trả lời:


2

OK đây là nỗ lực của tôi, nó khá là hack và cuối cùng tôi đã không thể xóa liên kết / màu của mục cha mẹ, nhưng liên kết cha mẹ sẽ không hoạt động .. vì vậy nó hoạt động tốt.

Đầu tiên tạo CPT với các thông số sau:

$args = array( 
        'hierarchical'        => true,
        'public'              => false,
        'show_ui'             => true,
        'show_in_menu'        => true,
        'capability_type'     => 'post', 
        'supports'            => array( 'title','page-attributes' ),
    );

Điền vào phần còn lại khi cần, điều này sẽ cho phép bạn có một bài đăng / trang phụ hiển thị trong quản trị viên nhưng không phải ở mặt trước, nó cũng cho phép chức năng phụ huynh thông qua page-attributes.

Bây giờ chúng ta có thể đưa vào một bộ lọc loại bỏ các liên kết "chỉnh sửa", "xem" và "rác" nhỏ cho phụ huynh.

function wpse_95518($actions) {

    global $post;

    //rename this to your CPT 
    if ($post->post_type =="parent"){
        // check if it's a parent
        if ( ! (is_post_type_hierarchical('parent') && $post->post_parent )) {

            unset( $actions['inline hide-if-no-js']);
            unset( $actions['trash'] );
            unset( $actions['view'] );  
            unset( $actions['edit'] );
        }           
        return $actions;
    }
    return $actions; 
}

add_filter('page_row_actions', 'wpse_95518');

Bây giờ mọi thứ trở nên thú vị một chút, để loại bỏ chức năng liên kết tiêu đề phụ huynh để chỉnh sửa bài đăng.

function wpse_removetitle_95518($action){

    global $post; 

    if ($post->post_type =="parent"){
        if ( is_post_type_hierarchical('parent') && $post->post_parent ) {
            return $action;
        }else{
            return '#'; //just in case
        }
    }
    return $action;
 }
add_filter( 'get_edit_post_link', 'wpse_removetitle_95518');

Bây giờ các mục cha mẹ của CPT không thể chỉnh sửa thông qua các liên kết trong quản trị viên, nó sẽ hiển thị dưới dạng edit.php?post_type=parent# nhưng trẻ em sẽ ổn.

Nhược điểm là mục cha mẹ vẫn sẽ là một liên kết màu xanh thay vì văn bản màu đen, tôi không thể tìm thấy bất kỳ cách đơn giản nào để xóa liên kết khỏi tiêu đề hoặc thêm CSS tùy chỉnh để thực hiện thông qua javascript mà không mở rộng WP List Table.

Tất nhiên bạn có thể thay đổi tiêu đề cha mẹ bằng cách sử dụng the_titlebộ lọc nhưng ngay cả khi đặt nó NULLthông qua điều kiện trên vẫn hiển thị< a href=..>

Ngoài ra, có thể có một cách đơn giản hơn để thực hiện tất cả điều này chỉ bằng cách sử dụng is_post_type_hierarchicalbộ lọc.

Github liên kết đếnlớp Bảng cho tiêu đề.


Cảm ơn vì tất cả điều này; nó được đánh giá cao. Nhưng nếu các trang không phải CPT - các trang WP thông thường - không thể là con của CPT, tôi đoán tôi phải thay đổi các trang thành CPT. Việc tôi làm bây giờ là tạo các trang mẹ trống và chặn chúng trong tệp robots.txt; và sau đó sử dụng các liên kết tùy chỉnh trong menu với http: // # để không sử dụng cha mẹ trong menu.
markratledge
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.