Thay thế tiêu đề trong bảng danh sách quản trị viên


10

Đây là tình huống của tôi: Tôi đang cố gắng lọc nội dung của cột tiêu đề trong bảng chỉnh sửa loại bài đăng tùy chỉnh của mình nhưng tôi không thể làm cho nó hoạt động được.

Đây là những gì tôi đã thử:

add_filter('manage_edit-mycpt_columns', 'replace_title_products');

function replace_title_products() {
    $oldtitle = get_the_title();
    $newtitle = str_replace(array("<span class='sub-title'>", "</span>"), array("", ""),$oldtitle);
    $title = esc_attr($newtitle);
    return $title;  
}

Tôi chỉ muốn lọc các <span>thẻ trong tiêu đề của tôi. ai đó có thể giúp tôi xin vui lòng?

Câu trả lời:


19

1. Thay đổi tiêu đề bài viết trong cột danh sách bài viết

Tôi đã hiểu lầm những gì bạn muốn - rõ ràng. Bạn có thể làm điều đó như thế này:

add_action(
    'admin_head-edit.php',
    'wpse152971_edit_post_change_title_in_list'
);
function wpse152971_edit_post_change_title_in_list() {
    add_filter(
        'the_title',
        'wpse152971_construct_new_title',
        100,
        2
    );
}

function wpse152971_construct_new_title( $title, $id ) {
    //print_r( $title );
    //print_r( $id );
    return 'new';
}

Tận dụng admin_head-$hook_suffixmóc.


(Tuyên bố miễn trừ trách nhiệm: Giữ thông tin này vì thông tin có liên quan và tốt)

2. Thay thế tiêu đề cột bảng

Ngoài ra, bạn không sử dụng và ghi đè tiêu đề bảng cột. Dưới đây là một số mã mẫu về cách làm:

  1. Dựa trên manage_{$this->screen->id}_columnsmóc

    add_filter(
        'manage_edit-post_columns',
        'wpse152971_replace_column_title_method_a'
    );
    function wpse152971_replace_column_title_method_a( $columns ) {  
        //print_r($columns);  
        $columns[ 'title' ] = 'new title';  
        return $columns;  
    }  
  2. Dựa trên manage_{$post_type}_posts_columnsmóc

    add_filter(
        'manage_post_posts_columns',
        'wpse152971_replace_column_title_method_b'
    );
    function wpse152971_replace_column_title_method_b( $posts_columns ) {
        //print_r($posts_columns);
        $posts_columns[ 'title' ] = 'new title';
        return $posts_columns;
    }

Cuối cùng nhưng không kém phần quan trọng, đoạn mã sau đây rất hữu ích để có được thông tin bạn cần:

add_action( 'admin_head', 'wpse152619_dbg_dev' );
function wpse152619_dbg_dev() {
    global $pagenow;
    print_r( $pagenow );
    echo '<br>';
    print_r( $_GET[ 'taxonomy' ] );
    echo '<br>';
    $current_screen = get_current_screen();
    print_r( $current_screen->id );
}

Xin lỗi tôi quên dòng trả về trong mã của mình ... Cảm ơn câu trả lời của bạn nhưng đây không phải là điều tôi đang cố gắng đạt được. Tôi không muốn thay đổi tên của cột cho tiêu đề, tôi muốn thay đổi nội dung được trả lại trong cột này cho mỗi bài đăng. Ngay bây giờ tôi có: "Đây là tiêu đề của tôi <span class =" tiêu đề phụ "> số 1 </ span>" cho hàng đầu tiên sau đó "Đây là tiêu đề của tôi <span class =" tiêu đề phụ "> số 2 </ span> "Cho hàng thứ hai, v.v ... Có rõ ràng hơn những gì tôi đang cố gắng đạt được không?
Pipo

Tuyệt vời!! Đó chính xác là những gì tôi muốn làm. Cảm ơn rất nhiều!
Pipo

i Đã thử Giải pháp 1 1. Change post title in post list columnGiá trị là Thay đổi, Làm cách nào tôi cũng có thể đổi tên Nhãn. ?
Nhà phát triển

@ Nhà phát triển Bạn có nghĩa là tiêu đề cột bảng? Giống như mô tả dưới thứ hai.
Nicolai

1
Tôi đã cố gắng làm tương tự nhưng đối với một tiêu đề bảng TAXONOMY tùy chỉnh (cần phải rút ngắn, vì tôi có 10+). Bạn có thể đưa ra một tốc ký cho cột quản trị 'menu_name' trong mảng 'nhãn' của nó, nhưng điều lạ là điều đó không ảnh hưởng đến đầu bảng. Tôi đã tìm kiếm rất nhiều và bài viết này tiếp tục được đưa ra, không có gì cho các nguyên tắc phân loại ... SO: Với Phương thức 2.1 = A của bạn, có thể thực hiện được (các cột có tên 'taxonomy- {my_tax_name}'), với Phương thức 2.2 = B của bạn lấy 'tiêu đề' và 'ngày' và các cột tự chèn khi print_r tiết lộ.
dùng3445853

1

Tôi vừa mới làm một cái gì đó tương tự một vài giờ trước, vì vậy mã của tôi có thể không phải là tốt nhất có thể nhưng bạn cần sử dụng 2 hook để đạt được điều này. Khi bạn dường như đang sử dụng một loại bài đăng tùy chỉnh từ những gì tôi thấy trong mã của mình, hai móc nối này sẽ là.

Manage_post_type_posts_columns ()

Manage_post_type_posts_custom_column ()

Tôi đã sử dụng manage_post_type_posts_columns()hook bộ lọc để tạo cột Tiêu đề mới và bỏ đặt cái cũ và sau đó là manage_post_type_posts_custom_column()hook hành động để sử dụng phương thức của riêng tôi để tạo nội dung / tiêu đề mới cho cột này.

Hy vọng điều này sẽ giúp, đã thêm mã của bạn vào ...

// Replace your Title Column with the Existing one //
function replace_title_column($columns) {

    $new = array();

    foreach($columns as $key => $title) {
        if ($key=='title') 
        $new['new-title'] = 'New Title'; // Our New Colomn Name
        $new[$key] = $title;
    }

    unset($new['title']); 
    return $new;
}

// Replace the title with your custom title
function replace_title_products($column_name, $post_ID) {
    if ($column_name == 'new-title') {
        $oldtitle = get_the_title();
        $newtitle = str_replace(array("<span class='sub-title'>", "</span>"), array("", ""),$oldtitle);
        $title = esc_attr($newtitle); 
        echo $title; 
    }
}

add_filter('manage_mycpt_columns', 'replace_title_column');
add_action('manage_mycpt_custom_column', 'replace_title_products', 10, 2);

Cảm ơn Matt. Bạn có biết có cách nào để chỉ lọc cột "tiêu đề" ban đầu trước khi nội dung được trả về không? Tôi thực sự không muốn tạo một cột tiêu đề mới vì cột tiêu đề đi kèm với rất nhiều chức năng (chỉnh sửa, chỉnh sửa nhanh, rác, v.v.).
Pipo

@Etienne Tôi không sợ. Có lẽ ai đó khác có thể cho chúng tôi ý tưởng về cách thực hiện việc này, cũng muốn biết :-)
Matt Royal

Xem câu trả lời sửa đổi của tôi, không cần phải tạo một cột mới. @Etienne
Nicolai

0

Thay thế cột

Dưới đây là một ví dụ thay thế hoàn toàn các cột, thay vì thêm và xóa các cột cụ thể

function set_book_columns($columns) {
    return array(
        'cb' => '<input type="checkbox" />',
        'title' => __('Title'),
        'comments' => '<span class="vers comment-grey-bubble" title="' . esc_attr__( 'Comments' ) . '"><span class="screen-reader-text">' . __( 'Comments' ) . '</span></span>',
        'date' => __('Date'),
        'publisher' => __('Publisher'),
        'book_author' =>__( 'Book Author')
    );
}
add_filter('manage_book_posts_columns' , 'set_book_columns');

Xem thêm:manage_$post_type_posts_columns

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.