Substituindo o Título na Tabela da Lista de Administradores

10

Aqui está minha situação: estou tentando filtrar o conteúdo da coluna title na minha tabela de edição de tipo de postagem personalizada, mas não consigo fazê-lo funcionar.

Aqui está o que eu tentei:

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

Eu só quero filtrar as <span>tags no meu título. alguém poderia me ajudar por favor?

Pipo
fonte

Respostas:

19

1. Alterar o título da publicação na coluna da lista de publicações

Eu entendi mal o que você queria - obviamente. Você pode fazer isso assim:

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

Fazendo uso do admin_head-$hook_suffixgancho.


(Isenção de responsabilidade: manter isso, porque é uma informação relacionada e boa)

2. Substitua o título da coluna da tabela

Além disso, você não está usando e substituindo o título da tabela da coluna. Abaixo um código exemplar de como fazê-lo:

  1. Baseado no manage_{$this->screen->id}_columnsgancho

    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. Baseado no manage_{$post_type}_posts_columnsgancho

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

Por último, mas não menos importante, o código a seguir é útil para obter as informações necessárias:

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
fonte
Desculpe, esqueci a linha de retorno no meu código ... Obrigado pela sua resposta, mas não é isso que estou tentando alcançar. Não quero alterar o nome da coluna do título, quero alterar o conteúdo retornado nesta coluna para cada postagem. No momento, tenho: "Este é o meu título <span class =" sub-title "> número 1 </span>" para a primeira linha e "Este é o meu título <span class =" sub-title "> número 2 </span> "para a segunda linha etc. É mais claro o que estou tentando alcançar?
Pipo
Impressionante!! Era exatamente isso que eu queria fazer. Muito obrigado!
Pipo
Tentei a solução 1 Os 1. Change post title in post list columnvalores são alterações, como também posso renomear o rótulo. ?
Developer
@ Desenvolvedor Você quer dizer o título da coluna da tabela? Como descrito em segundo.
Nicolai
11
Eu estava tentando fazer o mesmo, mas para um cabeçalho de tabela TAXONOMY personalizado (que precisa ser reduzido, pois tenho mais de 10). Você pode dar um atalho para a coluna de administração 'menu_name' em sua matriz 'labels', mas estranhamente isso não afeta o cabeçalho da tabela. Eu pesquisei bastante e este artigo continuou aparecendo, nada de taxonomias ... SO: Com o método 2.1 = A, isso pode ser feito (colunas denominadas 'taxonomy- {my_tax_name}'), com o método 2.2 = B somente para você obtenha 'title' e 'date' e colunas autoinseridas, conforme o print_r revela.
user3445853
1

Acabei de fazer algo semelhante há algumas horas, então meu código pode não ser o melhor possível, mas você precisa usar 2 ganchos para conseguir isso. Como você parece estar usando um tipo de postagem personalizado do que vi no seu código, esses dois ganchos seriam.

manage_post_type_posts_columns ()

manage_post_type_posts_custom_column ()

Eu usei o manage_post_type_posts_columns()gancho de filtro para criar uma nova coluna Título e desmarque a antiga e, em seguida, o manage_post_type_posts_custom_column()gancho de ação para usar meu próprio método para gerar o novo conteúdo / título para esta coluna.

Espero que isso ajude, tenha adicionado seu código também ...

// 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
fonte
Obrigado Matt. Você sabe se existe uma maneira de apenas filtrar a coluna "título" original antes que o conteúdo seja retornado? Eu realmente não quero criar uma nova coluna de título, pois a original vem com muitas funções (edição, edição rápida, lixeira, etc.).
Pipo
@ Etienne, receio que não. Talvez alguém pode nos dar uma idéia de como proceder para fazer isso, também gostaria de saber :-)
Matt Real
Veja minha resposta revisada, não há necessidade de criar uma nova coluna. @Etienne
Nicolai
0

Substituir colunas

Aqui está um exemplo que substitui completamente as colunas, em vez de adicionar e remover colunas específicas

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

Ver mais:manage_$post_type_posts_columns

Super Model
fonte