if (is_page(**PAGE ID**)) non funziona
Sto seguendo questo tutorial per aggiungere il codice degli Esperimenti di Contenuto di Google al file header.php
.
Ho aggiunto il seguente codice a header.php
:
<?php if (is_page('346') ):?>
<!-- Codice Esperimento di Contenuto di Google Analytics -->
...
<!-- Fine del codice Esperimento di Contenuto di Google Analytics -->
<?php endif; ?>
Questo non ha prodotto il codice dell'esperimento di contenuto nel front-end. Ho provato:
<?php if (is_page(346) ):?>
<!-- Codice Esperimento di Contenuto di Google Analytics -->
...
<!-- Fine del codice Esperimento di Contenuto di Google Analytics -->
<?php endif; ?>
Neanche questo ha funzionato.
Riesci a vedere perché questo codice non funziona? Grazie.

E se volessi aggiungere una funzione PHP in <!-- do stuff -->? Devo semplicemente usare `<?php if( $post->ID == 346) {
<!-- do your stuff here -->
} ?>`

La variabile globale $post è sempre disponibile? Sarà sempre un oggetto con un ID? E nelle pagine di archivio?

@Firsh-justifiedgrid.com sì, la variabile è sempre disponibile, non importa se si tratta di una pagina, un articolo, un allegato o qualsiasi tipo di post personalizzato.

Una soluzione più semplice sarebbe passare il title
o lo slug
come argomento in is_page()
. Non avrai problemi se duplicherai quella pagina su un altro server.
<?php
if (is_page( 'Titolo Pagina' ) ):
# Fai le tue operazioni
endif;
?>

Se l'amministratore decidesse di cambiare lo slug del post in futuro, questo invaliderebbe la condizione?

@ViktorBorítás Sì, lo invaliderebbe. Se solitamente usi le funzionalità di Importa/Esporta di WordPress durante lo sviluppo, non hai la garanzia di avere lo stesso ID della pagina su tutti i tuoi server. Se distribuisci l'intero database ogni volta, allora avrai lo stesso ID della pagina. Altrimenti puoi usare il titolo della pagina o lo slug.

@RRikesh giusto, tuttavia secondo me fare riferimento all'ID della pagina rimane la strategia più sicura a lungo termine (specialmente se il fantastico sistema di reindirizzamento interno di WP viene sovrascritto dagli sviluppatori), per rompere il minor numero di cose possibile in caso di cambiamento dello slug/titolo/nome. Questo può succedere fin troppo facilmente. ;) Suppongo/spero che nella maggior parte dei casi gli sviluppatori solitamente copino l'intero database, quindi gli ID delle pagine rimangono gli stessi.

Gli hook come init
non funzioneranno affatto.
Devi agganciare almeno a parse_query
.
Tutto quanto segue funzionerà:
is_page(198); # ID (intero)
is_page('198'); # ID (stringa)
is_page('Titolo Pagina'); # Titolo, sensibile alle maiuscole
is_page('slug-pagina'); # Slug
Ma deve essere agganciato almeno in parse_query
o qualsiasi altro hook successivo. Puoi vedere l'ordine degli hook di WordPress qui: https://codex.wordpress.org/Plugin_API/Action_Reference

Prima devi conoscere la differenza tra una pagina e un articolo. Una volta compreso questo, puoi scegliere se utilizzare is_page o is_single.
Se stai lavorando con pagine WordPress, allora scrivi in questo modo. Nota, questo esempio utilizza un array nel caso in cui tu voglia implementarlo su più pagine:
<?php if (is_page( array( 1, 529, 'o titolo della pagina' ) ) ) : ?>
<!-- Non fare nulla -->
<?php else : ?>
<!-- Inserisci il tuo codice qui -->
<?php endif; ?>
Ma se hai bisogno che abbia effetto anche sui tuoi articoli, allora aggiungi anche queste righe:
<?php if (is_single( array( 1, 529, 'o titolo dell\'articolo' ) ) ) : ?>
<!-- Non fare nulla -->
<?php else : ?>
<!-- Inserisci il tuo codice qui -->
<?php endif; ?>

prova a usare is_single($post)
nel tuo caso is_single(346) o is_single('346') dovrebbero funzionare entrambi
