Înlocuirea titlului în tabelul de administrare
Iată situația mea: Încerc să filtrez conținutul coloanei de titlu în tabelul de editare pentru tipul meu de postare personalizat, dar nu reușesc să-l fac să funcționeze.
Iată ce am încercat:
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;
}
Vreau doar să filtrez etichetele <span>
din titlul meu. Poate cineva să mă ajute?
1. Schimbarea titlului postării în coloana listei de postări
Am înțeles greșit ceea ce doreai - evident. Poți face asta în felul următor:
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 'nou';
}
Folosind hook-ul admin_head-$hook_suffix
.
(Notă: Păstrez acest cod, deoarece este relevant și oferă informații utile)
2. Înlocuirea titlului coloanei din tabel
În plus, nu folosești și suprascrii titlul coloanei din tabel. Mai jos este un exemplu de cod pentru a face acest lucru:
Bazat pe hook-ul
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' ] = 'titlu nou'; return $columns; }
Bazat pe hook-ul
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' ] = 'titlu nou'; return $posts_columns; }
În cele din urmă, următorul cod este util pentru a obține informațiile de care ai nevoie:
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 );
}

Scuze, am uitat linia de return în codul meu... Mulțumesc pentru răspuns, dar nu asta încerc să obțin. Nu vreau să schimb numele coloanei pentru titlu, ci conținutul returnat în această coloană pentru fiecare post. Momentan am: "Acesta este titlul meu <span class="sub-title">numărul 1</span>" pentru primul rând, apoi "Acesta este titlul meu <span class="sub-title">numărul 2</span>" pentru al doilea rând, etc. E mai clar acum ce încerc să obțin?

Am încercat Soluția 1 1. Change post title in post list column
Valorile s-au schimbat, Cum pot redenumi și Eticheta? . ?

@Developer Te referi la titlul coloanei din tabel? Așa cum este descris la al doilea punct.

Încercam să fac același lucru dar pentru un antet de tabel TAXONOMIE personalizat (care trebuie scurtat, având în vedere că am 10+). Poți oferi o prescurtare pentru coloana admin 'menu_name' în array-ul său 'labels', dar ciudat că asta nu afectează antetul tabelului. Am căutat mult și acest articol tot apărea, dar nimic pentru taxonomii... SO: Cu Metoda ta 2.1 =A, se poate face (coloane numite 'taxonomy-{my_tax_name}'), cu Metoda ta 2.2 =B obții doar 'title' și 'date' și coloane auto-inserate după cum arată print_r.

@user3445853 Bine de știut. Uneori nu există suficiente informații specifice disponibile, așa că ești direcționat către ceva similar, ca acest thread. Ai putea pune singur o întrebare axată pe taxonomii, și apoi să-ți răspunzi chiar cu explicația pe care ai oferit-o în comentariu. Pentru o mai bună înțelegere sau ca să nu explici totul de la zero, poți include un link către aici. Există chiar un insignă pentru răspunsul la propria întrebare, așa că e încurajat. Și ai face un serviciu pentru cei care caută același lucru în viitor.

Am făcut ceva similar acum câteva ore, așa că codul meu poate să nu fie cel mai bun posibil, dar ai nevoie de două hook-uri pentru a realiza asta. Din ceea ce am văzut în codul tău, pare că folosești un custom post type, așadar aceste două hook-uri ar fi.
manage_post_type_posts_columns()
manage_post_type_posts_custom_column()
Am folosit hook-ul de filtrare manage_post_type_posts_columns()
pentru a crea o nouă coloană Title și am eliminat-o pe cea veche, apoi hook-ul de acțiune manage_post_type_posts_custom_column()
pentru a folosi propria metodă de generare a noului conținut/titlu pentru această coloană.
Sper că te ajută, am adăugat și codul tău...
// Înlocuiește coloana Title cu una existentă //
function replace_title_column($columns) {
$new = array();
foreach($columns as $key => $title) {
if ($key=='title')
$new['new-title'] = 'Titlu Nou'; // Numele noii noastre coloane
$new[$key] = $title;
}
unset($new['title']);
return $new;
}
// Înlocuiește titlul cu titlul tău personalizat
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);

Mulțumesc, Matt. Știi cumva dacă există o modalitate de a filtra doar coloana originală "title" înainte ca conținutul să fie returnat? Nu prea doresc să creez o nouă coloană pentru titlu, deoarece cea originală vine cu o mulțime de funcții (editare, editare rapidă, coș de gunoi etc.).

@Etienne Din păcate, nu cred. Poate cineva altcineva ne poate oferi o idee despre cum am putea face acest lucru, aș dori și eu să știu :-)

Înlocuirea Coloanelor
Iată un exemplu care înlocuiește complet coloanele, în loc să adauge sau să elimine anumite coloane specifice
function set_book_columns($columns) {
return array(
'cb' => '<input type="checkbox" />',
'title' => __('Titlu'),
'comments' => '<span class="vers comment-grey-bubble" title="' . esc_attr__( 'Comentarii' ) . '"><span class="screen-reader-text">' . __( 'Comentarii' ) . '</span></span>',
'date' => __('Dată'),
'publisher' => __('Editor'),
'book_author' =>__( 'Autorul Cărții')
);
}
add_filter('manage_book_posts_columns' , 'set_book_columns');
Vezi mai multe:manage_$post_type_posts_columns
