Mengganti judul di tabel daftar admin

10

Inilah situasi saya: Saya mencoba memfilter konten kolom judul di tabel edit jenis kiriman khusus saya, tetapi saya tidak dapat membuatnya berfungsi.

Inilah yang saya coba:

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;  
}

Saya hanya ingin memfilter <span>tag pada judul saya. Bisakah seseorang membantu saya?

Pipo
sumber

Jawaban:

19

1. Ubah judul posting di kolom daftar posting

Saya salah mengerti apa yang Anda inginkan - jelas. Anda dapat melakukannya seperti ini:

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';
}

Memanfaatkan admin_head-$hook_suffixkail.


(Penafian: Menjaga ini, karena terkait dan informasi yang baik)

2. Ganti judul kolom tabel

Selain itu Anda tidak menggunakan dan menimpa judul tabel kolom. Di bawah ini beberapa kode teladan tentang cara melakukannya:

  1. Berdasarkan manage_{$this->screen->id}_columnskait

    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. Berdasarkan manage_{$post_type}_posts_columnskait

    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;
    }
    

Terakhir namun tidak kalah penting, kode berikut berguna untuk mendapatkan informasi yang Anda butuhkan:

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 );
}
Nicolai
sumber
Maaf saya lupa baris kembali dalam kode saya ... Terima kasih atas jawaban Anda tetapi ini bukan yang saya coba capai. Saya tidak ingin mengubah nama kolom untuk judul, saya ingin mengubah konten yang dikembalikan pada kolom ini untuk setiap posting. Saat ini saya memiliki: "Ini judul saya <span class =" subtitle "> number 1 </span>" untuk baris pertama lalu "Ini judul saya <span class =" subtitle "> number 2 </span> "untuk baris kedua, dll. Apakah lebih jelas apa yang saya coba capai?
Pipo
Hebat !! Itulah tepatnya yang ingin saya lakukan. Terima kasih banyak!
Pipo
i Mencoba Solusi 1 1. Change post title in post list columnNilai adalah Perubahan, Bagaimana saya bisa Mengganti Nama Label juga. ?
Pengembang
@Developer Maksudmu judul kolom tabel? Seperti dijelaskan di bawah kedua.
Nicolai
1
Saya mencoba melakukan hal yang sama tetapi untuk header tabel TAXONOMY kustom (yang perlu dipersingkat, karena saya memiliki 10+). Anda bisa memberikan singkatan untuk kolom admin 'menu_name' dalam larik 'labelnya, tetapi anehnya itu tidak mempengaruhi kepala tabel. Saya mencari banyak dan artikel ini terus muncul, tidak ada yang untuk taksonomi ... SO: Dengan Metode Anda 2.1 = A, itu bisa dilakukan (kolom bernama 'taxonomy- {my_tax_name}'), dengan Metode Anda 2.2 = B hanya Anda dapatkan 'judul' dan 'tanggal' dan kolom yang disisipkan sendiri saat print_r mengungkapkan.
user3445853
1

Saya baru saja melakukan sesuatu yang serupa beberapa jam yang lalu, jadi kode saya mungkin bukan yang terbaik tetapi Anda harus menggunakan 2 kait untuk mencapai ini. Ketika Anda tampaknya menggunakan jenis posting khusus dari apa yang saya lihat dalam kode Anda, kedua pengait ini akan menjadi.

manage_post_type_posts_columns ()

manage_post_type_posts_custom_column ()

Saya telah menggunakan manage_post_type_posts_columns()kait filter untuk membuat kolom Judul baru dan menghapus yang lama dan kemudian manage_post_type_posts_custom_column()kait tindakan untuk menggunakan metode saya sendiri untuk menghasilkan konten / judul baru untuk kolom ini.

Semoga ini bisa membantu, telah menambahkan kode Anda juga ...

// 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);
Matt Royal
sumber
Terima kasih, Matt. Apakah Anda tahu jika ada cara untuk hanya menyaring kolom "judul" asli sebelum konten dikembalikan? Saya tidak benar-benar ingin membuat kolom judul baru karena yang asli dilengkapi dengan banyak fungsi (edit, edit cepat, sampah, dll.).
Pipo
@Tienne, saya rasa tidak. Mungkin orang lain dapat memberi kita ide tentang bagaimana cara melakukan ini, juga ingin tahu :-)
Matt Royal
Lihat jawaban saya yang telah direvisi, tidak perlu membuat kolom baru. @ Etienne
Nicolai
0

Ganti Kolom

Berikut adalah contoh yang sepenuhnya menggantikan kolom, daripada menambahkan dan menghapus yang spesifik

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');

Lihat lebih lanjut:manage_$post_type_posts_columns

Super Model
sumber