Impostare il titolo usando il filtro wp_title

8 mag 2012, 11:39:10
Visualizzazioni: 31.8K
Voti: 2

Voglio fare qualcosa di molto semplice ma sono bloccato nel trovare dove in WordPress devo eseguirlo.

Quando qualcuno visita una pagina di un post del blog sul mio sito WordPress, voglio che il titolo nel post del blog sostituisca il titolo della pagina.

Penso di poterlo fare con l'hook del filtro wp_title?

Ho pensato a qualcosa del genere:

add_filter('wp_title', 'filter_pagetitle');

function filter_pagetitle($title) {
 $the_post_id    = get_the_ID();
 $the_post_data  = get_post($the_post_id);
 $title = $the_post_data->post_title;

 return $title;
}

Tuttavia sono un po' confuso su dove metterlo, pensavo che dovesse essere in loop-single.php poiché voglio che questo si applichi solo alle pagine singole, ma ho anche visto che deve essere in functions.php all'interno del mio tema?

Ogni aiuto sarebbe apprezzato :-)

Rich

1
Commenti

Per tua informazione, questo metodo è ora deprecato, vedi: https://wordpress.stackexchange.com/a/228063/152624

Jesse Nickles Jesse Nickles
11 giu 2024 22:41:08
Tutte le risposte alla domanda 1
8

Poiché wp_title() viene solitamente chiamato dal file header.php del tuo tema, viene eseguito su ogni pagina del tuo WordPress (solitamente nel frontend). Quindi posiziona l'hook del filtro e la funzione nel file functions.php del tuo tema, e controlla se si tratta di un articolo del blog prima di modificare il titolo. Qualcosa come questo:

add_filter('wp_title', 'filter_pagetitle');
function filter_pagetitle($title) {
    //controlla se è un articolo del blog
    if (!is_single())
        return $title;

    //se arrivi qui allora è un articolo del blog quindi cambia il titolo
    global $wp_query;
    if (isset($wp_query->post->post_title)){
        return $wp_query->post->post_title;
    }

    //se WordPress non riesce a trovare il titolo restituisci quello predefinito
    return $title;
}
8 mag 2012 11:53:18
Commenti

Questo è più o meno quello che pensavo potesse funzionare, il problema che ho è che functions.php sembra pensare che questo non sia un singolo post, quindi restituisce solo la variabile $title

Richard Bagshaw Richard Bagshaw
8 mag 2012 12:51:49

non ha nulla a che fare con il file functions.php, viene chiamato quando il tuo file header.php è incluso e se contiene wp_title().

Bainternet Bainternet
8 mag 2012 15:55:47

Concordo con l'approccio, ma perché non usare direttamente il globale $post? cioè global $post; $title = $post->post_title; Non credo ci sia bisogno di chiamare get_post() qui.

Chip Bennett Chip Bennett
8 mag 2012 17:19:02

@ChipBennett , Sì, funzionerebbe ancora meglio, stavo solo seguendo il formato della domanda, ho aggiornato la mia risposta

Bainternet Bainternet
8 mag 2012 18:05:16

Altri due punti: 1) il wp_title() template tag già restituisce il Titolo del Post nel contesto di un singolo articolo o pagina statica, quindi questo filtro è in realtà ridondante. 2) potresti considerare di concatenare il contenuto restituito da $title, per non sovrascrivere Plugin o altre funzioni (Plugin SEO, ecc.) che filtrano il titolo del documento.

Chip Bennett Chip Bennett
8 mag 2012 18:11:10

la variabile globale $post non ha funzionato per me quando l'ho provata, restituiva un ID ma era l'ID dell'ultima storia inserita nel DB piuttosto che quella che stiamo visualizzando.

Richard Bagshaw Richard Bagshaw
8 mag 2012 19:22:20

Tutti questi commenti sono cose che ho provato, e stranamente non hanno funzionato. Penso che ci possa essere un problema con l'installazione di WordPress o con il tema. Grazie comunque per l'aiuto.

Richard Bagshaw Richard Bagshaw
8 mag 2012 19:23:14

Penso che potresti avere altri filtri già collegati al tuo Titolo. Prova a disattivare i tuoi plugin e passa al tema Twenty Twelve, per vedere se il problema persiste.

fischi fischi
19 feb 2013 18:27:51
Mostra i restanti 3 commenti