Personalizarea Wordpress the_title cu add_filter
Încerc să creez un titlu personalizat în WordPress pentru postările făcute sub un post type custom. Practic, este un istoric de versiuni pentru o aplicație. Aș dori să introduc doar numărul versiunii în câmpul titlu, iar rezultatul să fie standardizat cu un șir de caractere conform.
Tipul meu de postare custom este 'custom_version' și rezultatul titlului pe care îl doresc este "Aplicația a fost actualizată la versiunea ".
Am înțeles că acest lucru poate fi realizat folosind add_filter și am încercat să modific acest cod de câteva zile, dar nu sunt expert în PHP, așa că orice ajutor este binevenit :) Iată codul:
add_filter('the_title', 'new_title');
function new_title($title) {
global $post, $post_ID;
$title['custom_version'] = 'Aplicația a fost actualizată la v'.$title;
return $title;
}

Problema este că amestecați variabilele $title
. $title
este parametrul transmis funcției new_title
, dar apoi îl utilizați ca un array: $title['custom_version']
. Încercați acest cod:
add_filter('the_title', 'new_title', 10, 2);
function new_title($title, $id) {
if('custom_version' == get_post_type($id))
$title = 'Aplicația a fost actualizată la versiunea v'.$title;
return $title;
}
De asemenea, vă recomand să prefixați funcția dvs. cu un prefix unic, deoarece există riscul ca o altă extensie sau temă să utilizeze o funcție numită new_title
, ceea ce poate provoca probleme!

Mulțumesc pentru răspuns, tollmanz, am încercat codul tău, dar problema este că înlocuiește TOATE titlurile, inclusiv cele ale paginilor..Iată o referință unde se face acest lucru: http://www.titaniumtrack.com/changelog/titanium-backup/3-0-6

De fapt, încerc să adaug acest filtru doar la tipurile de postări personalizate cu "custom_version" identificate..

Editat...Verific dacă post_ID este asociat cu o postare de tipul "custom_version" înainte de a manipula titlul. Îmi cer scuze pentru versiunea inițială. Nu mi-am dat seama că trebuia să fie doar pentru un singur CPT.

Cred că WooCommerce a făcut o treabă bună în a arăta modalități posibile de a verifica dacă chiar dorești să suprascrii titlul folosind filtrul the_title
.
Uneori, poți modifica titlul care va apărea în lista de categorii și în alte locuri unde nu ai vrea.
Iată cum procedează ei:
# plugins/woocommerce/includes/wc-page-functions.php
function wc_page_endpoint_title( $title ) {
global $wp_query;
if ( ! is_null( $wp_query ) && ! is_admin() && is_main_query() && in_the_loop() && is_page() && is_wc_endpoint_url() ) {
$endpoint = WC()->query->get_current_endpoint();
$action = isset( $_GET['action'] ) ? sanitize_text_field( wp_unslash( $_GET['action'] ) ) : '';
$endpoint_title = WC()->query->get_endpoint_title( $endpoint, $action );
$title = $endpoint_title ? $endpoint_title : $title;
remove_filter( 'the_title', 'wc_page_endpoint_title' );
}
return $title;
}
add_filter( 'the_title', 'wc_page_endpoint_title' );
Mai importante decât rescrierea titlului sunt metodele și verificările pe care le fac...
! is_admin() && is_main_query() && in_the_loop() && is_page() && is_wc_endpoint_url()
etc
Ține minte aceste verificări înainte de a suprascrie titluri pe care nu vrei să le modifici sau în locuri unde nu ar trebui.
