Elimină titlul paginii de pe pagina principală statică
Doresc să elimin titlul postării de pe pagina mea principală statică. Doar de pe acea pagină. Am creat un child theme dintr-un temă gratuită Press75. Așadar, aș dori să fac această modificare în fișierul function.php al child theme-ului meu.
Am folosit acest cod dar elimină titlul de pe toate paginile, postările și din navigația mea:
add_filter( 'the_title', 'remove_page_title' );
function remove_page_title() {
if(is_page('138')) {
}
return '';
}
Credeam că va elimina doar titlul de pe pagina cu ID-ul 138. Ce fac greșit?
Mulțumesc!
Îmi place această sugestie, dar nu ar fi mai bine să folosești if ( ! is_front_page() ) decât un ID de pagină hardcodat, cum ar fi if ( is_page( '138' ) )?

@Chip Bennett - Cu siguranță mai bine. Dar din citirea întrebării, răspunsul se potrivește bine. IMO cred că e mai bine să oferi o soluție cât mai apropiată de întrebare, chiar și atunci când există multe soluții mai bune disponibile. Există o zicală de la noi: "Țăranul nu mănâncă ce nu știe".

Dar aceasta a fost problema inițială: "Aș dori să elimin titlul postării de pe pagina mea statică principală. Doar acea pagină." În acest caz, aș recomanda cu siguranță soluția cu fișierul șablon front-page.php. În orice caz, răspunsul tău a primit votul meu.

Adaug acest cod folosind ID-ul paginii sau is_front_page și nu se întâmplă nimic...

Aproape ai reușit!
Iată codul tău original:
add_filter( 'the_title', 'remove_page_title' );
function remove_page_title() {
if(is_page('138')) {
}
return '';
}
Ceea ce face este să adauge un filtru pe the_title
care nu acceptă niciun parametru. Aceasta este prima ta greșeală. Filtru the_title
de fapt primește doi parametri - titlul paginii/postării și id-ul paginii/postării. Deci, mai întâi, să rescriem hook-ul nostru:
add_filter( 'the_title', 'remove_page_title', 10, 2 );
function remove_page_title( $title, $id ) {
}
Acest lucru atribuie filtrului nostru o prioritate de 10 și ne permite să acceptăm ambii parametri trimiși de filtru. Apoi specificăm parametrii pe care funcția noastră îi acceptă.
În interiorul funcției, vrem să verificăm dacă suntem pe pagina corectă. Dacă da, returnăm ''
, dacă nu, returnăm titlul:
if( '138' == $id ) return '';
return $title;
Funcția ta originală întotdeauna returna ''
când filtrul era executat. De aceea primeai un titlu gol pe fiecare pagină, nu doar pe pagina pe care doreai.
Codul nostru complet
Deci filtrul tău complet, rescris pentru a accepta parametri și a folosi logica corectă:
add_filter( 'the_title', 'remove_page_title', 10, 2 );
function remove_page_title( $title, $id ) {
if( '138' == $id ) return '';
return $title;
}

Acesta este modul de a elimina titlul principal (nu tag-ul) de pe pagina principală în tema 2020, fără a elimina the_title din elementele de meniu:
function no_title_front_page( $title, $id = null ) {
if (is_front_page() && !is_null( $id )) {
return '';
}
return $title;
}
add_filter( 'the_title', 'no_title_front_page', 10, 2 );
function wpse309151_remove_title_filter_nav_menu( $nav_menu, $args ) {
// lucrăm cu meniul, deci eliminăm filtrul de titlu
remove_filter( 'the_title', 'no_title_front_page', 10, 2 );
return $nav_menu;
}
// acest filtru se activează chiar înainte de procesul de creare a elementelor de meniu
add_filter( 'pre_wp_nav_menu', 'wpse309151_remove_title_filter_nav_menu', 10, 2 );
function wpse309151_add_title_filter_non_menu( $items, $args ) {
// am terminat de lucrat cu meniul, așa că readăugăm filtrul de titlu înapoi
add_filter( 'the_title', 'no_title_front_page', 10, 2 );
return $items;
}
// acest filtru se activează după ce crearea elementelor de meniu este finalizată
add_filter( 'wp_nav_menu_items', 'wpse309151_add_title_filter_non_menu', 10, 2 );
Codul se bazează pe acest răspuns.

<title> !== the_title();
Vezi: http://codex.wordpress.org/Function_Reference/the_title Mai mult, exact asta a sugerat @Chip Bennett ca un comentariu la răspunsul meu.

Vai. Am răspuns înainte ca Chip să posteze comentariul său. De asemenea, am clarificat răspunsul meu prin "dacă te-am înțeles corect", ceea ce evident nu am făcut-o.

@Ryan: Îmi pare rău dacă te-am jignit. Tocmai am comparat timpul și a fost o diferență de 2 minute.

Sper că răspunsurile, voturile, reputația etc. nu sunt foarte controversate aici? Nu sunt chiar îngrijorat în legătură cu ele; ceea ce contează cu adevărat este ca oamenii să primească ajutor pentru rezolvarea problemelor lor, nu?

@kaiser: Apreciez asta -- eram mai degrabă supărat pe mine pentru că nu am citit întrebarea, la care tu ai răspuns corect. A fost un pic șocant să fii începător pe acest site și să primești voturi negative, dar, după cum spune Chip, este vorba despre a oferi oamenilor răspunsurile. :)

Sunt foarte confuz în legătură cu modul în care funcționează acest site. Răspunsul lui Ryan nu seamănă deloc cu răspunsul lui Chip, din punctul meu de vedere. Se pare că Ryan sugerează să pun asta în fișierul template și nu în functions.php. Aș putea greși, dar voiam să fac această modificare folosind un hook sau un filter. Sunt complet confuz de ce este atât de dificil, având în vedere că am făcut asta înainte folosind Hybrid Theme Framework. Se întâmplă pentru că tema mea curentă nu are un hook implementat pentru asta? Și cea mai bună soluție până acum este un comentariu la postarea mea originală și nu unul dintre răspunsuri, deci cum acord creditul?

@Intrepid Realist, când am dat acest răspuns, nu am citit cu atenție întrebarea ta. Soluția mea este să ajustezi template-ul header.php, nu functions.php așa cum ai cerut. Pentru că am înțeles greșit întrebarea ta, aș comenta la răspunsul care este cel mai apropiat de ceea ce ai nevoie. Dacă plasezi simbolul @ înainte de numele persoanei, aceasta va fi notificată despre comentariu, astfel încât să poată reveni la tine (de exemplu, @kaiser, nu înțeleg cu adevărat...).
