Làm cách nào tôi có thể thêm thuộc tính bổ sung trong phần 'Thuộc tính trang' trong wp-admin cho các trang?


8

Tôi muốn thêm một danh sách chọn trong Page Attributehộp bạn nhìn thấy ở phía bên phải trong giao diện quản trị cho các trang.

Có ai biết nếu điều đó là có thể?

Hoặc ít nhất là thêm một hộp tùy chỉnh bên dưới hộp này?

Câu trả lời:


14

Không có móc thuận tiện để thêm một cái gì đó vào hộp đó.

Bạn có thể làm một trong hai điều.

1. Thêm một Meta Box mới

Bạn làm điều này bằng cách móc vào add_meta_boxeshành động và gọi add_meta_box. Bạn có thể chỉ định chức năng gọi lại trong lệnh gọi tới add_meta_box. Cuộc gọi lại đó sẽ đảm nhiệm việc lặp lại danh sách lựa chọn của bạn.

<?php
add_action( 'add_meta_boxes', 'wpse44966_add_meta_box' );
/**
 * Adds the meta box to the page screen
 */
function wpse44966_add_meta_box()
{
    add_meta_box(
        'wpse44966-meta-box', // id, used as the html id att
        __( 'WPSE 44966 Meta Box' ), // meta box title, like "Page Attributes"
        'wpse44966_meta_box_cb', // callback function, spits out the content
        'page', // post type or page. We'll add this to pages only
        'side', // context (where on the screen
        'low' // priority, where should this go in the context?
    );
}

/**
 * Callback function for our meta box.  Echos out the content
 */
function wpse44966_meta_box_cb( $post )
{
    // create your dropdown here
}

2. Xóa hộp meta thuộc tính Trang mặc định, thêm phiên bản của riêng bạn

Tất cả nội dung trên màn hình chỉnh sửa bài, ngoại trừ khu vực chỉnh sửa và tiêu đề chính, là một hộp meta. Bạn có thể loại bỏ chúng bằng cách gọi remove_meta_box, sau đó thay thế chúng bằng của riêng bạn.

Vì vậy, trước tiên, hãy sửa đổi chức năng thêm ở trên để bao gồm một lệnh gọi hộp meta. Sau đó, bạn sẽ cần sao chép page_attributes_meta_boxcơ thể chức năng từ đó wp-admin/includes/meta-boxes.phpvà đặt công cụ của bạn bên dưới nó.

<?php
add_action( 'add_meta_boxes', 'wpse44966_add_meta_box' );
/**
 * Adds the meta box to the page screen
 */
function wpse44966_add_meta_box( $post_type )
{
    // remove the default
    remove_meta_box(
        'pageparentdiv',
        'page',
        'side'
    );

    // add our own
    add_meta_box(
        'wpse44966-meta-box',
        'page' == $post_type ? __('Page Attributes') : __('Attributes'),
        'wpse44966_meta_box_cb', 
        'page', 
        'side', 
        'low'
    );
}

/**
 * Callback function for our meta box.  Echos out the content
 */
function wpse44966_meta_box_cb( $post )
{
    // Copy the the `page_attributes_meta_box` function content here
    // add your drop down
}

Dù bạn làm điều này bằng cách nào, bạn sẽ cần nối vào save_postđể lưu giá trị của trường với add_post_metavà / hoặc update_post_meta.

<?php
add_action( 'save_post', 'wpse44966_save_post' );
/**
 * Save our custom field value
 */
function wpse44966_save_post( $post_id )
{
    // check nonces, permissions here
    // save the data with update_post_meta
}

Hướng dẫn này có thể giúp bạn ra ngoài.


Cảm ơn cho một câu trả lời tuyệt vời. Tôi đã hy vọng cho một cái móc nào đó, nhưng điều này sẽ làm tốt thôi :)
Steven

giải pháp tuyệt vời và câu trả lời đầy đủ tốt - liên kết tham chiếu điền vào các khoảng trống - cảm ơn
Q Studio

2
Tính đến WordPress 4.9 có một móc hành động page_attributes_misc_attributesmà cháy ngay sau khi lĩnh vực tự, ngay trước khi văn bản trợ giúp ở dưới cùng của hộp meta này cho phép mở rộng hộp meta thay vì cần phải thay thế nó. Nó vượt qua một đối số duy nhất, $ post, đối tượng của bài đăng hiện tại.
Andy Macaulay-Brook
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.