Rimuovere il titolo della pagina dalla pagina statica principale

29 mar 2011, 23:08:59
Visualizzazioni: 7.91K
Voti: 2

Vorrei rimuovere il titolo del post dalla mia pagina statica principale. Solo da quella pagina. Ho creato un child theme partendo da un tema gratuito Press75. Quindi vorrei fare questa modifica nel file function.php del mio child theme.

Ho usato questo codice ma rimuove il titolo da tutte le pagine, post e dalla mia navigazione:

add_filter( 'the_title', 'remove_page_title' );

function remove_page_title() {
    if(is_page('138')) {
    }
    return '';
}

Pensavo che avrebbe rimosso solo il titolo dalla pagina con ID 138. Cosa sto sbagliando?

Grazie!

4
Commenti

Crea un template front-page.php e rimuovi il titolo?

t31os t31os
30 mar 2011 01:59:22

Questa era la soluzione più semplice. Ma sembra eccessivo creare un template solo per rimuovere il titolo. Riesco a farlo nel functions.php quando uso l'Hybrid Framework, semplicemente usando uno degli hook di Justin.

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

Mi sono imbattuto in questo problema perché ho esattamente lo stesso problema. Ho provato l'approccio Kaiser-Chip che ha funzionato bene - tranne per il fatto che ha anche rimosso tutte le voci del menu + tutti i titoli dei post nel widget della sidebar. Inoltre, sebbene abbia rimosso il titolo della pagina, lo stile del titolo è rimasto - incluso un po' di padding e un bordo inferiore.

C'è un'altra soluzione?

User User
30 mar 2011 13:32:16

@Anders Potresti cancellare questa risposta e aggiungerla come una nuova domanda.

Chris_O Chris_O
6 apr 2011 11:56:30
Tutte le risposte alla domanda 5
5

avvolgi la tua chiamata alla funzione add_filter attorno a un tag condizionale e usa la funzione integrata return false:

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

Mi piace questo suggerimento, ma non sarebbe meglio usare if ( ! is_front_page() ) invece di un ID di pagina hard-coded come if ( is_page( '138' ) )?

Chip Bennett Chip Bennett
29 mar 2011 23:30:21

@Chip Bennett - Sicuramente meglio. Ma leggendo la domanda, la risposta si adatta bene. IMO penso che sia meglio offrire una soluzione il più possibile vicina alla domanda, anche quando ci sono molte soluzioni migliori disponibili. C'è un detto da dove vengo: "Il contadino non mangia ciò che non conosce".

kaiser kaiser
29 mar 2011 23:57:22

Ma questo era il problema originale: "Vorrei rimuovere il titolo del post dalla mia pagina statica frontale. Solo quella pagina." In tal caso, consiglierei decisamente la soluzione con il template file front-page.php. In ogni caso, la tua risposta ha ottenuto il mio voto.

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

Aggiungo questo codice utilizzando l'ID della pagina o is_front_page e non succede nulla...

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

Non sono sicuro riguardo alla funzione __return_false. Potrebbe chiamarsi in modo simile. Potresti anche scrivere una piccola funzione tu stesso che restituisce false e aggiungerla. Comunque, il commento di Chip è la soluzione migliore.

kaiser kaiser
1 apr 2011 05:04:54
0

Ci sei quasi!

Ecco il tuo codice originale:

add_filter( 'the_title', 'remove_page_title' );

function remove_page_title() {
   if(is_page('138')) {
   }
   return '';
}

Quello che fa è aggiungere un filtro su the_title che non accetta alcun parametro. Questo è il tuo primo errore. Il filtro the_title in realtà accetta due parametri - il titolo della pagina/post e l'id della pagina/post. Quindi prima, riscriviamo il nostro hook:

add_filter( 'the_title', 'remove_page_title', 10, 2 );
function remove_page_title( $title, $id ) {

}

Questo assegna il nostro filtro con una priorità di 10 e ci permette di accettare entrambi i parametri inviati dal filtro. Poi specifichiamo i parametri che la nostra funzione accetta.

All'interno della funzione, vogliamo verificare se siamo sulla pagina corretta. Se lo siamo, restituiamo '', altrimenti restituiamo il titolo:

if( '138' == $id ) return '';

return $title;

La tua funzione originale sempre restituiva '' quando il filtro veniva eseguito. Ecco perché ottenevi un titolo vuoto su ogni pagina, non solo sulla pagina che desideravi.

Il nostro codice completo

Quindi il tuo filtro completo, riscritto per accettare i parametri e utilizzare la logica corretta:

add_filter( 'the_title', 'remove_page_title', 10, 2 );

function remove_page_title( $title, $id ) {
    if( '138' == $id ) return '';

    return $title;
}
16 dic 2011 20:51:48
0

Ecco come rimuovere il titolo principale (non il tag ) dalla pagina iniziale in 2020 senza rimuovere anche the_title dagli elementi del menu:

function no_title_front_page( $title, $id = null ) {
    // Se siamo nella pagina iniziale e l'ID non è nullo, restituisce una stringa vuota
    if (is_front_page() && !is_null( $id )) {
        return '';
    }
    return $title;
}

// Aggiunge il filtro al titolo con priorità 10 e 2 parametri accettati
add_filter( 'the_title', 'no_title_front_page', 10, 2 );


function wpse309151_remove_title_filter_nav_menu( $nav_menu, $args ) {
    // Stiamo lavorando con il menu, quindi rimuove il filtro del titolo
    remove_filter( 'the_title', 'no_title_front_page', 10, 2 );
    return $nav_menu;
}

// Questo filtro viene attivato appena prima del processo di creazione degli elementi del menu di navigazione
add_filter( 'pre_wp_nav_menu', 'wpse309151_remove_title_filter_nav_menu', 10, 2 );

function wpse309151_add_title_filter_non_menu( $items, $args ) {
    // Abbiamo finito di lavorare con il menu, quindi riaggiunge il filtro del titolo
    add_filter( 'the_title', 'no_title_front_page', 10, 2 );
    return $items;
}

// Questo filtro viene attivato dopo che la creazione degli elementi del menu di navigazione è completata
add_filter( 'wp_nav_menu_items', 'wpse309151_add_title_filter_non_menu', 10, 2 );

Codice basato sulla risposta questa.

12 giu 2020 13:18:10
0

Un modo per header.php:

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

Se ho capito bene -- che vuoi non visualizzare il tag <title> per la pagina principale -- puoi usare:

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

<title> !== the_title(); Vedi: http://codex.wordpress.org/Function_Reference/the_title Inoltre questo è esattamente ciò che @Chip Bennett ha suggerito come commento alla mia risposta.

kaiser kaiser
29 mar 2011 23:58:58

Cavolo. Ho risposto prima che Chip pubblicasse il suo commento. Ho anche chiarito la mia risposta con "se ho capito bene", cosa che chiaramente non ho fatto.

Ryan Ryan
30 mar 2011 00:12:43

@Ryan: Scusa se ho sbagliato. Ho solo confrontato l'orario e c'era una differenza di 2 minuti.

kaiser kaiser
30 mar 2011 01:18:22

Spero davvero che risposte, voti, reputazione, ecc. non siano terribilmente controversi qui? Non sono veramente preoccupato per questi; ciò che conta davvero è che le persone ottengano aiuto per risolvere i loro problemi, giusto?

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

@kaiser: Lo apprezzo -- ero più arrabbiato con me stesso per non aver letto la domanda, a cui hai risposto correttamente. È stato un po' uno shock essere un n00b su questo sito e ricevere voti negativi ma, come dice Chip, si tratta di aiutare le persone a ottenere le loro risposte. :)

Ryan Ryan
30 mar 2011 07:45:32

Sono molto confuso su come funziona questo sito. La risposta di Ryan non mi sembra per niente simile a quella di Chip. Mi sembra che Ryan stia suggerendo di inserire questo nel file del template e non nel functions.php. Potrei sbagliarmi, ma volevo apportare questa modifica usando un hook o un filter. Sono completamente confuso sul perché sia così difficile, visto che l'ho già fatto usando l'Hybrid Theme Framework. È perché il mio tema attuale non ha un hook predisposto per questo? E la soluzione migliore finora è un commento al mio post originale e non una delle risposte, quindi come faccio ad assegnare il credito?

Intrepid Realist Intrepid Realist
1 apr 2011 00:19:52

@Intrepid Realist, quando ho dato questa risposta, non avevo letto attentamente la tua domanda. La mia soluzione è modificare il tuo template header.php, non functions.php come hai chiesto. Poiché ho frainteso la tua domanda, commenterei la risposta più vicina a ciò di cui hai bisogno. Se inserisci il simbolo @ prima del nome della persona, la notificherà del commento in modo che possa risponderti (ad esempio, @kaiser, non capisco davvero...).

Ryan Ryan
4 apr 2011 04:17:22
Mostra i restanti 2 commenti