if (is_page(**PAGE ID**)) non funziona

19 mar 2014, 13:03:51
Visualizzazioni: 230K
Voti: 7

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.

3
Commenti

Hai verificato due volte di essere sulla pagina con ID 346, giusto?

kraftner kraftner
19 mar 2014 13:11:15

Se si tratta di un altro tipo di contenuto, prova a usare if ( get_the_ID() == 346 ).

fischi fischi
19 mar 2014 13:13:45

Sì kraftner. Ho cambiato strategia e ho iniziato a usare WP Content Experiments & Event Tracking, che funziona per me.

Steve Steve
19 mar 2014 13:15:26
Tutte le risposte alla domanda 8
5
18

puoi usare questo per

<?php 
global $post;

if( $post->ID == 346) { ?>

      <!-- fai quello che ti serve qui -->

<?php } ?>

puoi usare questo codice ovunque, sia nell'header che in qualsiasi altra parte.

6 gen 2017 11:43:52
Commenti

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

  <!-- do your stuff here -->

} ?>`

jarrodwhitley jarrodwhitley
16 nov 2018 20:43:44

Sì, puoi chiamare la tua funzione in <!-- do your stuff here -->

Waqas Shakeel Waqas Shakeel
17 nov 2018 07:50:03

Mmm. Non funziona per me. Suppongo che farò un post.

jarrodwhitley jarrodwhitley
19 nov 2018 17:07:09

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

Firsh - justifiedgrid.com Firsh - justifiedgrid.com
5 gen 2022 01:02:28

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

Waqas Shakeel Waqas Shakeel
6 gen 2022 09:47:42
4

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;
?>
19 mar 2014 15:32:42
Commenti

Utilizzare lo slug è la soluzione migliore

Rob Rob
10 ago 2018 07:43:10

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

Viktor Borítás Viktor Borítás
15 apr 2020 11:16:32

@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 RRikesh
21 apr 2020 07:45:45

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

Viktor Borítás Viktor Borítás
28 apr 2020 13:36:18
0

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

4 ago 2018 16:36:22
0

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; ?>
5 ott 2019 04:30:05
0

prova a usare is_single($post)

nel tuo caso is_single(346) o is_single('346') dovrebbero funzionare entrambi

altro qui

16 mar 2017 13:36:49
0

Per i singoli articoli usa

if ( is_single( '1346' ) )

Per le singole pagine usa

if ( is_page( '1346' ) )

Dove '1346' è l'ID del tuo articolo o pagina.

is_page NON funzionerà con i singoli articoli e is_single non funzionerà con le singole pagine.

28 gen 2020 10:56:14
1

Prova a rimuovere '' (apici singoli) dal numero ID e dovrebbe funzionare:

is_page(34)
29 ago 2016 17:38:39
Commenti

Questa risposta necessita di ulteriori spiegazioni

cjbj cjbj
29 ago 2016 17:42:52
0
-1
function test_run(){

   if (is_page( 'Titolo Pagina' ) ): //puoi usare is_page(int id post/slug/titolo)
      # Fai le tue operazioni
   endif;

}

add_action('parse_query', 'test_run');

completando la risposta di @Lucas Bustamante

28 gen 2020 09:11:23