if (is_page(**PAGE ID**)) nu funcționează

19 mar. 2014, 13:03:51
Vizualizări: 230K
Voturi: 7

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.

3
Comentarii

Ai verificat dublu că ești pe pagina cu ID-ul 346, corect?

kraftner kraftner
19 mar. 2014 13:11:15

Dacă acesta este un alt tip de conținut, încearcă să folosești if ( get_the_ID() == 346 ).

fischi fischi
19 mar. 2014 13:13:45

Da, kraftner. Am schimbat tactica și am început să folosesc WP Content Experiments & Event Tracking, care funcționează pentru mine.

Steve Steve
19 mar. 2014 13:15:26
Toate răspunsurile la întrebare 8
5
18

poți folosi acest cod pentru

<?php 
global $post;

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

      <!-- faci ce ai nevoie aici -->

<?php } ?>

poți folosi acest cod oriunde, fie în header sau în orice altă parte.

6 ian. 2017 11:43:52
Comentarii

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

} ?>`

jarrodwhitley jarrodwhitley
16 nov. 2018 20:43:44

Da, poți apela funcția ta în <!-- do your stuff here -->

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

Hmm. Nu funcționează pentru mine. Cred că voi crea o postare.

jarrodwhitley jarrodwhitley
19 nov. 2018 17:07:09

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

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

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

Waqas Shakeel Waqas Shakeel
6 ian. 2022 09:47:42
4

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

Folosirea slug-ului este cea mai bună soluție

Rob Rob
10 aug. 2018 07:43:10

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

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

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

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

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

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

4 aug. 2018 16:36:22
0

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

încearcă să folosești is_single($post)

în cazul tău is_single(346) sau is_single('346') ar trebui să funcționeze ambele

mai multe detalii aici

16 mar. 2017 13:36:49
0

Pentru postări individuale folosiți

if ( is_single( '1346' ) )

Pentru pagini individuale folosiți

if ( is_page( '1346' ) )

Unde '1346' este ID-ul postării sau paginii dvs.

is_page NU va funcționa cu postări individuale, iar is_single nu va funcționa cu pagini individuale.

28 ian. 2020 10:56:14
1

Încercați să eliminați '' (ghilimele simple) din numărul ID și va funcționa:

is_page(34)
29 aug. 2016 17:38:39
Comentarii

Acest răspuns necesită mai multe explicații

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

   if (is_page( 'Page Title' ) ): //poți folosi is_page(int post id/slug/title)
      # Fă ce ai de făcut
   endif;

}

add_action('parse_query', 'test_run');

completând răspunsul lui @Lucas Bustamante

28 ian. 2020 09:11:23