if (is_page(**PAGE ID**)) nu funcționează
Urmez acest tutorial pentru adăugarea codului Google Content Experiments în header.php
.
Am adăugat următorul cod în header.php
:
<?php if (is_page('346') ):?>
<!-- Cod Google Analytics Content Experiment -->
...
<!-- Sfârșitul codului Google Analytics Content Experiment -->
<?php endif; ?>
Acest lucru nu a generat codul pentru experimentul de conținut în frontend. Am încercat:
<?php if (is_page(346) ):?>
<!-- Cod Google Analytics Content Experiment -->
...
<!-- Sfârșitul codului Google Analytics Content Experiment -->
<?php endif; ?>
Nici această variantă nu a funcționat.
Puteți vedea de ce acest cod nu funcționează? Mulțumesc.

Ce se întâmplă dacă vreau să adaug o funcție PHP în <!-- do stuff -->? Pur și simplu folosesc `<?php if( $post->ID == 346) {
<!-- do your stuff here -->
} ?>`

Este global $post întotdeauna disponibil? Va fi întotdeauna un obiect cu un ID? Dar pe paginile de arhivă?

@Firsh-justifiedgrid.com da, variabila este întotdeauna disponibilă, indiferent dacă este pagină, articol, atașament sau orice tip de postare personalizată.

O soluție mai simplă ar fi să transmiți title
(titlul) sau slug
(slug-ul) ca argument în is_page()
. Nu vei avea probleme dacă duplici acea pagină pe un alt server.
<?php
if (is_page( 'Page Title' ) ):
# Faci ce ai de făcut
endif;
?>

Dacă administratorul decide să schimbe slug-ul articolului în viitor, aceasta va strica această condiție?

@ViktorBorítás Da, va strica. Dacă folosești de obicei funcționalitățile de Import/Export din WordPress în timpul dezvoltării, nu ai garanția că vei avea același ID de pagină pe toate serverele tale. Dacă implementezi întreaga bază de date de fiecare dată, atunci vei obține același ID de pagină. Altfel, poți folosi titlul paginii sau slug-ul.

@RRikesh corect, însă în opinia mea referirea la ID-ul paginii rămâne cea mai sigură strategie pe termen lung (mai ales dacă redirecționarea internă nativă a WP a fost suprascrisă de dezvoltatori), pentru a nu strica prea multe în cazul unei posibile modificări a slug-ului/Titlului/numele. Asta se poate întâmpla prea ușor. ;) Presupun/sper că în majoritatea cazurilor dezvoltatorii copiază de obicei întreaga bază de date, așa că ID-urile paginilor rămân aceleași.

Hook-uri precum init
nu vor funcționa deloc.
Trebuie să folosești cel puțin hook-ul parse_query
.
Tot ce este mai jos va funcționa:
is_page(198); # ID (int)
is_page('198'); # ID (string)
is_page('Un Titlu'); # Titlu, sensibil la majuscule
is_page('un-titlu'); # Slug
Dar trebuie să fie folosit cel puțin în parse_query
sau orice alt hook după acesta. Poți vedea ordinea hook-urilor WordPress aici: https://codex.wordpress.org/Plugin_API/Action_Reference

Mai întâi trebuie să înțelegeți diferența dintre o pagină și un articol. După ce ați înțeles această diferență, puteți alege dacă să folosiți is_page sau is_single.
Dacă lucrați cu pagini WordPress, atunci scrieți în felul următor. Rețineți că acest exemplu folosește un array în cazul în care doriți să implementați funcționalitatea pe mai multe pagini:
<?php if (is_page( array( 1, 529, 'sau titlul paginii' ) ) ) : ?>
<!-- Nu face nimic -->
<?php else : ?>
<!-- Introduceți codul aici -->
<?php endif; ?>
Dar dacă aveți nevoie ca funcționalitatea să se aplice și pe articole, atunci adăugați și următoarele linii:
<?php if (is_single( array( 1, 529, 'sau titlul articolului' ) ) ) : ?>
<!-- Nu face nimic -->
<?php else : ?>
<!-- Introduceți codul aici -->
<?php endif; ?>

încearcă să folosești is_single($post)
în cazul tău is_single(346) sau is_single('346') ar trebui să funcționeze ambele

