Sostituzione del titolo nella tabella elenco di amministrazione


10

Ecco la mia situazione: sto cercando di filtrare il contenuto della colonna del titolo nella mia tabella di modifica del tipo di post personalizzato ma non riesco a farlo funzionare.

Ecco cosa ho provato:

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

Voglio solo filtrare i <span>tag nel mio titolo. Qualcuno mi potrebbe aiutare per favore?

Risposte:


19

1. Cambia il titolo del post nella colonna dell'elenco dei post

Ho frainteso quello che volevi, ovviamente. Puoi farlo in questo modo:

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

Facendo uso del admin_head-$hook_suffixgancio.


(Dichiarazione di non responsabilità: mantenere questo, perché è correlato e buone informazioni)

2. Sostituisci il titolo della colonna della tabella

Inoltre non stai usando e sovrascrivendo il titolo della tabella delle colonne. Di seguito un codice esemplare su come farlo:

  1. Basato sul manage_{$this->screen->id}_columnsgancio

    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. Basato sul manage_{$post_type}_posts_columnsgancio

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

Ultimo ma non meno importante, il seguente codice è utile per ottenere le informazioni necessarie:

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

Scusa, ho dimenticato la riga di ritorno nel mio codice ... Grazie per la risposta, ma non è questo ciò che sto cercando di ottenere. Non voglio cambiare il nome della colonna per il titolo, voglio cambiare il contenuto che viene restituito in questa colonna per ogni post. In questo momento ho: "Questo mio titolo <span class =" sottotitolo "> numero 1 </span>" per la prima riga quindi "Questo mio titolo <span class =" sottotitolo "> numero 2 </span> "per la seconda fila, ecc. È più chiaro cosa sto cercando di ottenere?
Pipo,

Eccezionale!! Questo è esattamente quello che volevo fare. Molte grazie!
Pipo,

Ho provato la soluzione 1 I 1. Change post title in post list columnvalori sono cambiamenti, come posso rinominare anche l'etichetta. ?
Sviluppatore

@Developer Intendi il titolo della colonna della tabella? Come descritto al secondo.
Nicolai,

1
Stavo cercando di fare lo stesso, ma per un'intestazione di tabella TAXONOMY personalizzata (che deve essere abbreviata, dato che ne ho 10+). Puoi dare una scorciatoia per la colonna admin 'menu_name' nella sua matrice 'label', ma stranamente ciò non influisce sulla testata della tabella. Ho cercato molto e questo articolo ha continuato a venire, niente per le tassonomie ... SO: Con il tuo Metodo 2.1 = A, puoi farlo (colonne chiamate 'tassonomia- {my_tax_name}'), con il tuo Metodo 2.2 = B solo tu ottieni colonne 'title' e 'date' e autoinserite come rivela print_r.
user3445853,

1

Ho appena fatto qualcosa di simile poche ore fa, quindi il mio codice potrebbe non essere il migliore ma potrebbe essere necessario utilizzare 2 hook per raggiungere questo obiettivo. Poiché sembra che tu stia utilizzando un tipo di post personalizzato da quello che ho visto nel tuo codice, questi due hook sarebbero.

manage_post_type_posts_columns ()

manage_post_type_posts_custom_column ()

Ho usato l' manage_post_type_posts_columns()hook del filtro per creare una nuova colonna del titolo e ho annullato quello precedente e poi l' manage_post_type_posts_custom_column()hook dell'azione per usare il mio metodo per generare il nuovo contenuto / titolo per questa colonna.

Spero che questo ti aiuti, ho aggiunto anche il tuo codice ...

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

Grazie Matt. Sai se esiste un modo per filtrare solo la colonna "titolo" originale prima che il contenuto venga restituito? Non voglio davvero creare una nuova colonna del titolo poiché quella originale è dotata di molte funzioni (modifica, modifica rapida, cestino, ecc.).
Pipo,

@Etienne, temo di no. Forse qualcun altro può darci un'idea su come procedere, vorrei sapere anche :-)
Matt Royal

Vedi la mia risposta rivista, non è necessario creare una nuova colonna. @Etienne
Nicolai,

0

Sostituisci colonne

Ecco un esempio che sostituisce completamente le colonne, anziché aggiungere e rimuovere quelle specifiche

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

Vedi altro:manage_$post_type_posts_columns

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.