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

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>теги в моем заголовке. Может ли кто-нибудь помочь мне, пожалуйста?

Pipo
источник

Ответы:

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 );
}
Nicolai
источник
Извините, я забыл обратную строку в моем коде ... Спасибо за ваш ответ, но это не то, чего я пытаюсь достичь. Я не хочу менять имя столбца для заголовка, я хочу изменить содержимое, которое возвращается в этом столбце для каждого сообщения. Прямо сейчас у меня есть: "Это мой заголовок <span class =" sub-title "> номер 1 </ span>" для первой строки, затем "Это мой заголовок <span class =" sub-title "> номер 2 </ span> для второго ряда и т. д. Разве более ясно, чего я пытаюсь достичь?
Пипо
Потрясающие!! Это именно то, что я хотел сделать. Большое спасибо!
Пипо
Пробное решение 1 1. Change post title in post list columnЗначения - это изменения, как я могу переименовать ярлык? ?
Разработчик
@Developer Вы имеете в виду заголовок столбца таблицы? Как описано в разделе второй.
Николай
1
Я пытался сделать то же самое, но для пользовательского заголовка таблицы TAXONOMY (который должен быть сокращен, так как у меня есть 10+). Вы можете указать сокращение для столбца admin 'menu_name' в его массиве меток, но странным образом это не влияет на заголовок таблицы. Я много искал, и эта статья продолжала появляться, ничего для таксономий ... ТАК: С вашим методом 2.1 = A это можно сделать (столбцы с именем 'taxonomy- {my_tax_name}'), с вашим методом 2.2 = B вы только получить «заголовок» и «дату» и самостоятельно вставленные столбцы, как показывает print_r.
user3445853
1

Я только что сделал нечто подобное несколько часов назад, поэтому мой код может быть не лучшим, каким он может быть, но для этого нужно использовать 2 хука. Поскольку вы, похоже, используете пользовательский тип записи из того, что я видел в вашем коде, эти две ловушки будут.

manage_post_type_posts_columns ()

manage_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);
Мэтт Роял
источник
Спасибо Мэтт. Знаете ли вы, есть ли способ просто отфильтровать оригинальный столбец «заголовок», прежде чем содержимое будет возвращено? Я не хочу создавать новый столбец заголовка, так как исходный поставляется с большим количеством функций (редактирование, быстрое редактирование, корзина и т. Д.).
Пипо
@ Боюсь, что нет. Может быть, кто-то еще может дать нам представление о том, как это сделать, также хотел бы знать :-)
Matt Royal
Смотрите мой исправленный ответ, нет необходимости создавать новый столбец. @Etienne
Николай
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

Супер модель
источник