Заміна заголовка в таблиці списку адміністратора


10

Ось моя ситуація: я намагаюся відфільтрувати вміст стовпця заголовка в моїй спеціальній таблиці редагування типу публікації, але я не можу працювати.

Ось що я спробував:

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

Я просто хочу відфільтрувати <span>теги в моїй назві. Може хтось допоможе мені, будь ласка?

Відповіді:


19

1. Змініть заголовок публікації у стовпці списку публікацій

Я неправильно зрозумів, чого ти хотів - очевидно. Ви можете зробити це так:

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

Використання admin_head-$hook_suffixгачка.


(Відмова від відповідальності: Зберігайте це, оскільки це пов'язано з хорошою інформацією)

2. Замініть заголовок стовпця таблиці

Крім того, ви не використовуєте та перезаписуєте заголовок таблиці стовпців. Нижче наведено прикладний код, як це зробити:

  1. На основі manage_{$this->screen->id}_columnsгачка

    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. На основі manage_{$post_type}_posts_columnsгачка

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

І останнє, але не менш важливе для отримання потрібної інформації:

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

Вибачте, я забув рядок повернення в своєму коді ... Дякую за вашу відповідь, але це не те, чого я намагаюся досягти. Я не хочу змінювати назву стовпця для заголовка, я хочу змінити вміст, який повертається в цій колонці для кожної публікації. Зараз у мене є: "Цей мій заголовок <span class =" sub-title "> номер 1 </span>" для першого рядка, тоді "This my title <span class =" sub-title "> номер 2 </span> "для другого ряду тощо. Чи зрозуміліше, чого я намагаюся досягти?
Піпо

Дивовижно !! Це саме те, що я хотів зробити. Дуже дякую!
Піпо

i Випробуване рішення 1 1. Change post title in post list columnЗначення - це зміни, як я можу перейменувати етикетку. ?
розробник

@Developer Ви маєте на увазі назву стовпця таблиці? Як описано в другому.
Миколай

1
Я намагався зробити те саме, але для користувацького заголовка таблиці TAXONOMY (який потрібно скоротити, оскільки у мене є 10+). Ви можете дати стенограму для стовпчика адміністратора 'menu_name' у своєму масиві «мітки», але, як не дивно, це не впливає на голову таблиці. Я багато шукав, і ця стаття продовжувала з'являтися, нічого не стосується таксономій ... ТАК: З Вашим Методом 2.1 = A це можна зробити (стовпці з назвою "таксономія - {my_tax_name}"), з Вашим методом 2.2 = B тільки отримуйте "заголовок" і "дата" та стовпці, що вводяться самостійно, як показує print_r.
користувач3445853

1

Я щойно робив щось подібне кілька годин тому, тож мій код може виявитися не найкращим, ніж він міг бути, але для цього потрібно використовувати 2 гачки. Як вам здається, ви користуєтеся користувацьким типом публікації з того, що я бачив у вашому коді, ці два гачки будуть.

management_post_type_posts_columns ()

management_post_type_posts_custom_column ()

Я використовував manage_post_type_posts_columns()гачок фільтра, щоб створити новий стовпець заголовка та скинути старий, а потім manage_post_type_posts_custom_column()гак дій, щоб використовувати власний метод для створення нового вмісту / заголовка для цього стовпця.

Сподіваюся, це допомагає, додали ваш код у ...

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

Дякую Метт. Чи знаєте ви, чи є спосіб просто відфільтрувати оригінальний стовпець "заголовок" до повернення вмісту? Мені дуже не хочеться створювати новий стовпчик заголовка, оскільки оригінальний приходить з великою кількістю функцій (редагування, швидке редагування, сміття тощо).
Піпо

@Etienne Боюся, що ні. Можливо, хтось ще може дати нам уявлення про те, як робити це, хотів би також знати :-)
Метт Роял

Дивіться мою переглянуту відповідь, не потрібно створювати нову колонку. @Etienne
Nicolai

0

Замініть стовпці

Ось приклад, який повністю замінює стовпці, а не додавання та видалення конкретних

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

Побачити більше:manage_$post_type_posts_columns

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.