Elimină titlul paginii de pe pagina principală statică

29 mar. 2011, 23:08:59
Vizualizări: 7.91K
Voturi: 2

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!

4
Comentarii

Creează un șablon front-page.php și elimină titlul?

t31os t31os
30 mar. 2011 01:59:22

Aceasta a fost cea mai ușoară soluție. Dar pare exagerat să creezi un șablon doar pentru a elimina titlul. Pot face asta în functions.php când folosesc Hybrid Framework, doar prin utilizarea unuia dintre hook-urile lui Justin.

Intrepid Realist Intrepid Realist
1 apr. 2011 00:10:52

Am dat peste această problemă exact când mă confruntam cu aceeași situație. Am încercat abordarea Kaiser-Chip care a funcționat bine - cu excepția faptului că a eliminat toate elementele de meniu + toate titlurile postărilor în widget-ul din bara laterală. De asemenea, deși a eliminat titlul paginii, stilizarea titlului a rămas - inclusiv unele padding-uri și un border-bottom.

Există o altă soluție?

User User
30 mar. 2011 13:32:16

@Anders Poți să ștergi acest răspuns și să-l adaugi ca o întrebare nouă.

Chris_O Chris_O
6 apr. 2011 11:56:30
Toate răspunsurile la întrebare 5
5

înconjoară apelul funcției add_filter cu o condiție și folosește funcția încorporată return false:

if ( is_page('138') )
{
      add_filter( 'the_title', '__return_false' );
}
29 mar. 2011 23:22:05
Comentarii

Î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 Chip Bennett
29 mar. 2011 23:30:21

@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".

kaiser kaiser
29 mar. 2011 23:57:22

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.

Chip Bennett Chip Bennett
30 mar. 2011 06:10:18

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

Intrepid Realist Intrepid Realist
1 apr. 2011 00:11:42

Nu sunt sigur despre funcția __return_false. S-ar putea să se numească similar cu asta. Ai putea de asemenea să scrii tu o mică funcție care returnează false și să o adaugi. Oricum, comentariul lui Chip este cea mai bună soluție.

kaiser kaiser
1 apr. 2011 05:04:54
0

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;
}
16 dec. 2011 20:51:48
0

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.

12 iun. 2020 13:18:10
0

O metodă pentru header.php:

<?php if (is_page('138')) { echo'
<style type="text/css" title="text/css">
selectorultitluluipaginii {display:none;}
</style>'
; ?>
29 mar. 2011 23:15:55
7
-1

Dacă te-am înțeles corect — că vrei să nu afișezi un <title> pentru pagina principală — poți folosi:

<title><?php if ( ! is_front_page() ) { the_title(); } ?></title>
29 mar. 2011 23:26:21
Comentarii

<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.

kaiser kaiser
29 mar. 2011 23:58:58

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 Ryan
30 mar. 2011 00:12:43

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

kaiser kaiser
30 mar. 2011 01:18:22

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?

Chip Bennett Chip Bennett
30 mar. 2011 06:15:39

@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. :)

Ryan Ryan
30 mar. 2011 07:45:32

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 Intrepid Realist
1 apr. 2011 00:19:52

@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...).

Ryan Ryan
4 apr. 2011 04:17:22
Arată celelalte 2 comentarii