Sostituzione del titolo nella tabella di amministrazione
Ecco la mia situazione: sto cercando di filtrare il contenuto della colonna del titolo nella tabella di modifica del mio custom post type 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 tag <span>
nel mio titolo. Qualcuno potrebbe aiutarmi per favore?
1. Modificare il titolo del post nella colonna dell'elenco dei post
Ho frainteso quello che volevi - ovviamente. Puoi farlo così:
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 'nuovo';
}
Sfruttando l'hook admin_head-$hook_suffix
.
(Dichiarazione: Mantengo questo, perché è correlato e contiene buone informazioni)
2. Sostituire il titolo della colonna della tabella
Inoltre non stai usando e sovrascrivendo il titolo della colonna della tabella. Di seguito un codice esemplificativo su come farlo:
Basato sull'hook
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' ] = 'nuovo titolo'; return $columns; }
Basato sull'hook
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' ] = 'nuovo titolo'; return $posts_columns; }
Ultimo ma non meno importante, il seguente codice è utile per ottenere le informazioni di cui hai bisogno:
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 return nel mio codice... Grazie per la risposta ma non è quello 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. Al momento ho: "Questo è il mio titolo <span class="sub-title">numero 1</span>" per la prima riga, poi "Questo è il mio titolo <span class="sub-title">numero 2</span>" per la seconda riga, ecc. È più chiaro quello che sto cercando di ottenere?

Ho provato la Soluzione 1 1. Change post title in post list column
I valori sono cambiati, come posso rinominare anche l'etichetta?

@Developer Intendi il titolo della colonna della tabella? Come descritto sotto il secondo punto.

Stavo cercando di fare la stessa cosa ma per un'intestazione di tabella TASSONOMIA personalizzata (che deve essere abbreviata, visto che ne ho 10+). Puoi specificare una versione abbreviata per la colonna admin 'menu_name' nel suo array 'labels', ma stranamente questo non influisce sull'intestazione della tabella. Ho cercato molto e questo articolo continuava a saltare fuori, nulla per le tassonomie... SO: Con il tuo Metodo 2.1 =A, si può fare (colonne chiamate 'taxonomy-{my_tax_name}'), con il tuo Metodo 2.2 =B ottieni solo 'title' e 'date' e colonne auto-inserite come rivela il print_r.

@user3445853 Buono a sapersi. A volte non ci sono abbastanza informazioni specifiche disponibili, quindi vieni indirizzato a qualcosa di simile, come questo thread. Potresti fare una domanda specifica sulle tassonomie tu stesso, e poi darti la risposta che hai appena delineato nel tuo commento. Per una migliore comprensione o per non dover spiegare tutto da zero potresti voler linkare qui. C'è persino un badge per rispondere alla propria domanda, quindi è assolutamente incoraggiato. E faresti un servizio per le persone che cercano la stessa cosa in futuro.

Ho fatto qualcosa di simile poche ore fa, quindi il mio codice potrebbe non essere il migliore possibile, ma hai bisogno di usare 2 hook per ottenere questo risultato. Da quello che ho visto nel tuo codice, sembra che tu stia usando un custom post type, quindi questi due hook sarebbero.
manage_post_type_posts_columns()
manage_post_type_posts_custom_column()
Ho utilizzato l'hook filter manage_post_type_posts_columns()
per creare una nuova colonna Titolo e rimuovere quella vecchia, e poi l'hook action manage_post_type_posts_custom_column()
per usare il mio metodo personalizzato per generare il nuovo contenuto/titolo per questa colonna.
Spero che questo ti aiuti, ho aggiunto anche il tuo codice...
// Sostituisci la tua Colonna Titolo con quella esistente //
function replace_title_column($columns) {
$new = array();
foreach($columns as $key => $title) {
if ($key=='title')
$new['new-title'] = 'Nuovo Titolo'; // Il Nome della Nostra Nuova Colonna
$new[$key] = $title;
}
unset($new['title']);
return $new;
}
// Sostituisci il titolo con il tuo titolo personalizzato
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 "title" originale prima che il contenuto venga restituito? Preferirei non creare una nuova colonna per il titolo dato che quella originale include molte funzioni (modifica, modifica rapida, cestino, ecc.).

@Etienne Temo di no. Forse qualcun altro può darci un'idea su come fare questa cosa, mi piacerebbe saperlo anch'io :-)

Sostituire le Colonne
Ecco un esempio che sostituisce completamente le colonne, invece di aggiungere o rimuoverne di specifiche
function set_book_columns($columns) {
return array(
'cb' => '<input type="checkbox" />',
'title' => __('Titolo'),
'comments' => '<span class="vers comment-grey-bubble" title="' . esc_attr__( 'Commenti' ) . '"><span class="screen-reader-text">' . __( 'Commenti' ) . '</span></span>',
'date' => __('Data'),
'publisher' => __('Editore'),
'book_author' =>__( 'Autore del Libro')
);
}
add_filter('manage_book_posts_columns' , 'set_book_columns');
Vedi anche:manage_$post_type_posts_columns
