Thêm trường tùy chỉnh trong chỉnh sửa nhanh wordpress

Cho đến nay, trong loạt bài viết của chúng tôi về Bảng quản trị trong WordPress, chúng tôi đã xem xét nhiều cách khác nhau để tùy chỉnh bố cục của Bảng quản trị WordPress, bao gồm cả cách thêm cột mới. Trong bài viết cuối cùng của loạt bài này, chúng ta sẽ xem xét một tùy chỉnh khác mà bạn có thể muốn xem xét… mở rộng chức năng 'Chỉnh sửa nhanh' có trong Bảng quản trị

Bắt đầu nào

Mở rộng trường chỉnh sửa nhanh

Đối với ví dụ của chúng tôi trong hướng dẫn này, chúng tôi sẽ thêm một trường tùy chỉnh sẽ hiển thị một URL sẽ được mô tả là 'Nguồn' mà chúng tôi sẽ điền một url liên kết đến một số thông tin bổ sung liên quan đến bài viết của chúng tôi. Chúng ta sẽ xem cách thêm nó vào khu vực Chỉnh sửa nhanh của màn hình Quản trị bài đăng và cách lưu các cập nhật được thực hiện cho trường này

Bước một. Thêm trường tùy chỉnh

Chúng tôi đã giới thiệu cách tạo trường ‘Nguồn’ trong bài viết Bắt đầu với Trường tùy chỉnh WordPress. Vì mục đích ngắn gọn, chúng tôi sẽ không lặp lại những hướng dẫn đó ở đây. Tất nhiên, bạn có thể tạo bất kỳ Trường tùy chỉnh nào bạn thích

Thêm trường tùy chỉnh trong chỉnh sửa nhanh wordpress

Nếu bạn không quen với cách chúng tôi thêm trường tùy chỉnh 'Nguồn' hoặc bất kỳ trường tùy chỉnh nào khác cho vấn đề đó, vui lòng xem bài viết của chúng tôi về điều này. Khi bạn đã thêm một trường tùy chỉnh phù hợp, đã đến lúc chuyển sang bước tiếp theo

Bước hai. Thêm cột tùy chỉnh

Chúng tôi cần thêm một cột tùy chỉnh vào Bảng quản trị của mình. Chúng tôi đã giải thích chi tiết cách thực hiện việc này trong bài viết Tùy chỉnh bảng quản trị WordPress. Bắt đầu. Hãy xem và làm theo các bước

Cuối cùng, bạn sẽ có một số mã trong functions.php chủ đề đang hoạt động của mình trông như thế này

add_filter('manage_posts_columns','add_custom_columns');
function add_custom_columns( $columns ) {
    $columns['source'] = 'Source';
    return $columns;
}
add_action( 'manage_posts_custom_column','custom_columns_content', 10, 2 );
function custom_columns_content ( $column_id, $post_id ) {
    switch( $column_id ) {
        case 'source':
            echo get_post_field('source', $post_id);
        break;
   }
}

Bây giờ, bạn sẽ thấy cột mới trong bảng Quản trị bài đăng

Thêm trường tùy chỉnh trong chỉnh sửa nhanh wordpress

Thêm Hộp Chỉnh sửa Nhanh Tùy chỉnh

Hãy chuyển đến bảng danh sách Bài đăng của chúng tôi và nhấp vào liên kết 'Chỉnh sửa nhanh' bên dưới một trong các bài đăng của chúng tôi

Thêm trường tùy chỉnh trong chỉnh sửa nhanh wordpress

Những gì chúng ta sẽ thấy ở đây là tất cả các tùy chọn có sẵn mặc định mà WordPress cung cấp trong màn hình Chỉnh sửa nhanh. Hiện tại, chúng tôi sẽ không thấy trường 'Nguồn' mới của mình

Chúng tôi sẽ thêm điều này bằng cách sử dụng móc quick_edit_custom_box mà WordPress cung cấp. Hành động này phân tích cú pháp tất cả các hành động mặc định trong chế độ 'Chỉnh sửa nhanh' bằng cách thực hiện một lần cho mỗi cột bao gồm các cột tùy chỉnh

Nó được cấu trúc như sau.

add_action( 'quick_edit_custom_box', 'source_custom_edit_box', 10, 2 );
function source_custom_edit_box( $column_name, $post_type ) {
    global $post;

    switch ( $post_type ) {
        case 'post':

        if( $column_name === 'source' ):
        ?>
		
0. Các tham số là
add_action( 'quick_edit_custom_box', 'source_custom_edit_box', 10, 2 );
function source_custom_edit_box( $column_name, $post_type ) {
    global $post;

    switch ( $post_type ) {
        case 'post':

        if( $column_name === 'source' ):
        ?>
		
1 là tên của cột cần chỉnh sửa,
add_action( 'quick_edit_custom_box', 'source_custom_edit_box', 10, 2 );
function source_custom_edit_box( $column_name, $post_type ) {
    global $post;

    switch ( $post_type ) {
        case 'post':

        if( $column_name === 'source' ):
        ?>
		
2 là sên loại bài đăng và
add_action( 'quick_edit_custom_box', 'source_custom_edit_box', 10, 2 );
function source_custom_edit_box( $column_name, $post_type ) {
    global $post;

    switch ( $post_type ) {
        case 'post':

        if( $column_name === 'source' ):
        ?>
		
3 cho tên phân loại nếu cần

Trong tệp functions.php của bạn, hãy thêm các dòng sau

add_action( 'quick_edit_custom_box', 'source_custom_edit_box', 10, 2 );
function source_custom_edit_box( $column_name, $post_type ) {
    global $post;

    switch ( $post_type ) {
        case 'post':

        if( $column_name === 'source' ):
        ?>
		

Xin lưu ý rằng chúng tôi nhận được giá trị trường 'nguồn' trong mã PHP bằng cách lặp lại

add_action( 'quick_edit_custom_box', 'source_custom_edit_box', 10, 2 );
function source_custom_edit_box( $column_name, $post_type ) {
    global $post;

    switch ( $post_type ) {
        case 'post':

        if( $column_name === 'source' ):
        ?>
		
5

Bây giờ, nếu bạn làm mới trang và nhấp lại vào 'Chỉnh sửa nhanh', bây giờ bạn sẽ thấy trường 'nguồn' có giá trị chính xác

Thêm trường tùy chỉnh trong chỉnh sửa nhanh wordpress

Bước thứ ba. Lưu chỉnh sửa nội tuyến

Để lưu dữ liệu đầu vào vào trường tùy chỉnh của chúng tôi, chúng tôi sẽ sử dụng hành động

add_action( 'quick_edit_custom_box', 'source_custom_edit_box', 10, 2 );
function source_custom_edit_box( $column_name, $post_type ) {
    global $post;

    switch ( $post_type ) {
        case 'post':

        if( $column_name === 'source' ):
        ?>
		
6 được kích hoạt khi một bài đăng được cập nhật

Trong ví dụ của chúng tôi, nơi chúng tôi thực hiện các chỉnh sửa nhanh, dữ liệu cho bài đăng được lưu trữ trong

add_action( 'quick_edit_custom_box', 'source_custom_edit_box', 10, 2 );
function source_custom_edit_box( $column_name, $post_type ) {
    global $post;

    switch ( $post_type ) {
        case 'post':

        if( $column_name === 'source' ):
        ?>
		
7 sau khi
add_action( 'quick_edit_custom_box', 'source_custom_edit_box', 10, 2 );
function source_custom_edit_box( $column_name, $post_type ) {
    global $post;

    switch ( $post_type ) {
        case 'post':

        if( $column_name === 'source' ):
        ?>
		
6 thực thi

Mã cần thiết để đạt được điều này như sau và phải được chèn vào tệp functions.php

add_action( 'save_post', 'update_source_custom_edit_box' );
function update_source_custom_edit_box() {
    if( isset( $_POST ) && isset( $_POST['source'] ) ) { 
        update_post_meta($_POST['post_ID'], 'source', $_POST['source']);
    }
    return;
}

Không, điều này đã được thực hiện, hãy thử thay đổi giá trị đầu vào của trường thành một giá trị khác như “https. //ngẫu nhiên. url” và nhấn nút cập nhật ở dưới cùng bên phải

Thêm trường tùy chỉnh trong chỉnh sửa nhanh wordpress

Bạn lưu ý giá trị trong trường nguồn của chúng tôi được cập nhật như mong đợi. Tuy nhiên, nếu bạn nhấp lại vào nút Chỉnh sửa nhanh và xem lại trường tùy chỉnh của mình (trong trường hợp của chúng tôi là 'Nguồn'), bạn sẽ thấy rằng giá trị không thay đổi trong hộp chỉnh sửa

Thêm trường tùy chỉnh trong chỉnh sửa nhanh wordpress

Nhiều lần bạn thay đổi giá trị, bạn sẽ luôn thấy thay đổi trong ô cột của bảng Quản trị, nhưng giá trị nhập này sẽ không được phản ánh trong trường Chỉnh sửa nhanh

Vậy tại sao điều này xảy ra?

Hãy nhớ rằng chúng tôi nhận được giá trị trường 'nguồn' bằng cách lặp lại

add_action( 'quick_edit_custom_box', 'source_custom_edit_box', 10, 2 );
function source_custom_edit_box( $column_name, $post_type ) {
    global $post;

    switch ( $post_type ) {
        case 'post':

        if( $column_name === 'source' ):
        ?>
		
5. Nội dung Chỉnh sửa nhanh được điền khi người dùng nhấn nút 'chỉnh sửa', có nghĩa là nội dung này được tạo động và không được điền trước khi tải màn hình quản trị bài đăng. Chúng tôi không thể hiển thị chính xác siêu dữ liệu của mình bằng cách truy xuất siêu dữ liệu đó qua mã PHP vì chúng tôi sẽ luôn thấy giá trị được nhập khi chúng tôi vào màn hình Quản trị thay vì giá trị mới

Thay vào đó, chúng tôi phải thu thập các giá trị của mình bằng cách sử dụng JavaScript. Vì vậy, trước khi tiếp tục, chúng tôi sẽ đi vào mã PHP trước đó của mình và xóa giá trị lặp lại bằng cách thay thế dòng này…

…với cái này

Bước bốn. Truy xuất các giá trị đầu vào bằng cách sử dụng JS

Trước tiên, chúng tôi sẽ phải đưa vào tập lệnh JS của mình bằng cách thêm những dòng này vào tệp functions.php của bạn

// RETRIEVE FIELDS with JS
add_action( 'admin_enqueue_scripts', 'enqueue_admin_scripts_and_styles' ); 
function enqueue_admin_scripts_and_styles(){
    wp_enqueue_script('UNIQUE-SCRIPT-NAME', '/PATH-TO-YOUR-JS-FILE', array('jquery','inline-edit-post' ));
}

Vì vậy, nếu bạn tạo một tệp

add_action( 'save_post', 'update_source_custom_edit_box' );
function update_source_custom_edit_box() {
    if( isset( $_POST ) && isset( $_POST['source'] ) ) { 
        update_post_meta($_POST['post_ID'], 'source', $_POST['source']);
    }
    return;
}
2 chẳng hạn và đặt nó trong thư mục chủ đề đang hoạt động của mình, thì trong đoạn mã trên, bạn nên thay thế 'UNIQUE-SCRIPT-NAME' bằng một cái gì đó như 'extend-quick-edit-script' và '/PATH-

// RETRIEVE FIELDS with JS
add_action( 'admin_enqueue_scripts', 'enqueue_admin_scripts_and_styles' ); 
function enqueue_admin_scripts_and_styles(){
    wp_enqueue_script('extend-quick-edit-script', get_template_directory_uri() . '/extend-quick-edit.js', array('jquery','inline-edit-post' ));
}

Trong

add_action( 'save_post', 'update_source_custom_edit_box' );
function update_source_custom_edit_box() {
    if( isset( $_POST ) && isset( $_POST['source'] ) ) { 
        update_post_meta($_POST['post_ID'], 'source', $_POST['source']);
    }
    return;
}
4, chúng tôi đã thêm jQuery vì tập lệnh của chúng tôi sử dụng jQuery và xác định rằng hàm
add_action( 'save_post', 'update_source_custom_edit_box' );
function update_source_custom_edit_box() {
    if( isset( $_POST ) && isset( $_POST['source'] ) ) { 
        update_post_meta($_POST['post_ID'], 'source', $_POST['source']);
    }
    return;
}
5 ban đầu sẽ được sửa đổi

Trong

add_action( 'save_post', 'update_source_custom_edit_box' );
function update_source_custom_edit_box() {
    if( isset( $_POST ) && isset( $_POST['source'] ) ) { 
        update_post_meta($_POST['post_ID'], 'source', $_POST['source']);
    }
    return;
}
2 nội dung sẽ như thế này

jQuery(document).ready(function($){

    var $inline_editor = inlineEditPost.edit;
    inlineEditPost.edit = function(id){

        $inline_editor.apply( this, arguments);

        var post_id = 0;
        if( typeof(id) == 'object'){
            post_id = parseInt(this.getId(id));
        }

        if(post_id != 0){
            $post_modified_col_value = $('#post-' + post_id).find('.source').text();	
            $('#edit-' + post_id + ' input[name=source]').val($post_modified_col_value);
        }
    }

});

Hãy phá vỡ một chút những gì chúng tôi đã làm ở đây

Lúc đầu, chúng tôi lấy đối tượng

add_action( 'save_post', 'update_source_custom_edit_box' );
function update_source_custom_edit_box() {
    if( isset( $_POST ) && isset( $_POST['source'] ) ) { 
        update_post_meta($_POST['post_ID'], 'source', $_POST['source']);
    }
    return;
}
7, được giới thiệu trong tệp cốt lõi của WordPress
add_action( 'save_post', 'update_source_custom_edit_box' );
function update_source_custom_edit_box() {
    if( isset( $_POST ) && isset( $_POST['source'] ) ) { 
        update_post_meta($_POST['post_ID'], 'source', $_POST['source']);
    }
    return;
}
8 nếu bạn muốn tìm hiểu thêm về nó. Vì vậy, bây giờ chúng ta đã có một bản sao của đối tượng trong biến
add_action( 'save_post', 'update_source_custom_edit_box' );
function update_source_custom_edit_box() {
    if( isset( $_POST ) && isset( $_POST['source'] ) ) { 
        update_post_meta($_POST['post_ID'], 'source', $_POST['source']);
    }
    return;
}
9

Sau đó, chúng tôi sửa đổi chức năng của

add_action( 'save_post', 'update_source_custom_edit_box' );
function update_source_custom_edit_box() {
    if( isset( $_POST ) && isset( $_POST['source'] ) ) { 
        update_post_meta($_POST['post_ID'], 'source', $_POST['source']);
    }
    return;
}
7 bằng cách áp dụng chức năng hiện có trong
1 và thêm chức năng bổ sung mà chúng tôi muốn ngay sau đó

Ghi chú. Trước khi tiếp tục, chúng tôi muốn nhắc bạn rằng nếu bạn nhìn vào trình kiểm tra phần tử, bạn sẽ nhận thấy rằng mỗi hàng trong bảng danh sách bài đăng có một id như “post-POSTID”. Ví dụ: “post-5” cho bài đăng có id 5. Ngoài ra, ô cột "Nguồn" tương ứng có lớp "nguồn". Hơn nữa, trong khu vực chỉnh sửa nhanh, đầu vào 'nguồn' có id như "chỉnh sửa-POSTID"

Vì vậy, trong các dòng tiếp theo của mã JS, điều cuối cùng chúng ta sẽ làm là thay thế giá trị của trường nhập 'Nguồn' của khu vực chỉnh sửa nhanh bằng giá trị của ô cột 'Nguồn'

Bây giờ tất cả sẽ hoạt động như mong đợi. Nếu bạn lưu giá trị và mở lại khu vực chỉnh sửa nhanh, đầu vào Nguồn cũng sẽ bị thay đổi

Với điều kiện là một trường tùy chỉnh đã được đăng ký cùng với cột tùy chỉnh của nó, quy trình làm việc của chúng tôi sẽ như thế này

Thêm trường tùy chỉnh trong chỉnh sửa nhanh wordpress

Phần kết luận

Thêm trường tùy chỉnh vào mô-đun Chỉnh sửa nhanh của bảng Danh sách quản trị không dễ dàng. Tuy nhiên, nếu bạn đang thêm một trường được cập nhật thường xuyên thì rõ ràng nó có thể tiết kiệm rất nhiều thời gian về lâu dài. Như mọi khi, những gì có thể đạt được trong WordPress là vô hạn. Ngay lập tức, nó cho phép tùy chỉnh rộng rãi nhưng với một số mã hóa bổ sung, bạn không thể làm được gì nhiều