if (is_page(**ID DE PÁGINA**)) no funciona

19 mar 2014, 13:03:51
Vistas: 230K
Votos: 7

Estoy siguiendo este tutorial sobre cómo añadir el código de Google Content Experiments a header.php.

Agregué el siguiente código a header.php:

<?php if (is_page('346') ):?>
    <!-- Código de Google Analytics Content Experiment -->
        ...
    <!-- Fin del código de Google Analytics Content Experiment -->
<?php endif; ?>

Esto no produjo el código del experimento de contenido en el front-end. Intenté:

<?php if (is_page(346) ):?>
    <!-- Código de Google Analytics Content Experiment -->
        ...
    <!-- Fin del código de Google Analytics Content Experiment -->
<?php endif; ?>

Esto tampoco funcionó.

¿Pueden ver por qué este código no está funcionando? Gracias.

3
Comentarios

¿Verificaste dos veces que estás en la página con ID 346, verdad?

kraftner kraftner
19 mar 2014 13:11:15

Si este es otro tipo de contenido, intenta usar if ( get_the_ID() == 346 ).

fischi fischi
19 mar 2014 13:13:45

Sí kraftner. Cambié de táctica y comencé a usar WP Content Experiments & Event Tracking, lo cual funciona para mí.

Steve Steve
19 mar 2014 13:15:26
Todas las respuestas a la pregunta 8
5
18

puedes usar esto para

<?php 
global $post;

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

      <!-- haz lo que necesites aquí -->

<?php } ?>

puedes usar esto en cualquier lugar, ya sea en el encabezado o en cualquier otra parte.

6 ene 2017 11:43:52
Comentarios

¿Qué pasa si quiero agregar una función PHP en <!-- do stuff -->? ¿Simplemente uso `<?php if( $post->ID == 346) {

  <!-- do your stuff here -->

} ?>`

jarrodwhitley jarrodwhitley
16 nov 2018 20:43:44

Sí, puedes llamar a tu función en <!-- do your stuff here -->

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

Hmm. No me funciona. Supongo que haré una publicación.

jarrodwhitley jarrodwhitley
19 nov 2018 17:07:09

¿La variable global $post siempre está disponible? ¿Siempre será un objeto con un ID? ¿Qué pasa en las páginas de archivo?

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

@Firsh-justifiedgrid.com sí, la variable siempre está disponible sin importar si es una página, entrada, adjunto o cualquier tipo de contenido personalizado.

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

Una solución más sencilla sería pasar el title o el slug como argumento en is_page(). No tendrás problemas si duplicas esa página en otro servidor.

<?php
if (is_page( 'Título de la página' ) ):
  # Haz lo que necesites
endif;
?>
19 mar 2014 15:32:42
Comentarios

Usar el slug es la mejor solución

Rob Rob
10 ago 2018 07:43:10

Si el administrador decide cambiar el slug de la publicación en el futuro, ¿rompería esta condición?

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

@ViktorBorítás Sí, lo hará. Si normalmente usas las funciones de Importar/Exportar de WordPress durante el desarrollo, no tienes garantizado tener el mismo ID de página en todos tus servidores. Si despliegas toda la base de datos cada vez, entonces obtendrás el mismo ID de página. De lo contrario, puedes usar el título de la página o el slug.

RRikesh RRikesh
21 abr 2020 07:45:45

@RRikesh cierto, sin embargo en mi opinión referenciar el ID de la página sigue siendo la estrategia más segura a largo plazo (especialmente si la redirección interna nativa de WP es sobrescrita por los desarrolladores), para romper la menor cantidad de cosas posible ante un posible cambio de slug/título/nombre. Eso puede pasar demasiado fácilmente. ;) Supongo/espero que en la mayoría de los casos los desarrolladores usualmente reflejan toda la base de datos, por lo que los IDs de página permanecen iguales.

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

Los hooks como init no funcionarán en absoluto.

Debes enganchar al menos en parse_query.

Todo lo siguiente funcionará:

is_page(198); # ID (entero)
is_page('198'); # ID (cadena)
is_page('Algún Título'); # Título, sensible a mayúsculas
is_page('algún-título'); # Slug

Pero debe estar enganchado al menos en parse_query o cualquier otro hook posterior. Puedes ver el orden de los hooks de WordPress aquí: https://codex.wordpress.org/Plugin_API/Action_Reference

4 ago 2018 16:36:22
0

Primero debes conocer la diferencia entre una página y una entrada. Una vez que hayas entendido esto, podrás elegir si usar is_page o is_single.

Si estás trabajando con páginas de WordPress, escribe de la siguiente manera. Nota: este ejemplo utiliza un array por si necesitas implementarlo en múltiples páginas:

<?php if (is_page( array( 1, 529, 'o título de la página'  ) ) ) : ?>
    <!-- No hacer nada -->
<?php else : ?>
    <!-- Inserta tu código aquí -->
<?php endif; ?>

Pero si necesitas que también afecte a tus entradas, añade estas líneas también:

<?php if (is_single( array( 1, 529, 'o título de la entrada'  ) ) ) : ?>
    <!-- No hacer nada -->
<?php else : ?>
    <!-- Inserta tu código aquí -->
<?php endif; ?>
5 oct 2019 04:30:05
0

intenta usar is_single($post)

en tu caso is_single(346) o is_single('346') ambas deberían funcionar

más información aquí

16 mar 2017 13:36:49
0

Para entradas individuales usa

if ( is_single( '1346' ) )

Para páginas individuales usa

if ( is_page( '1346' ) )

Donde '1346' es el ID de tu entrada o página.

is_page NO funcionará con entradas individuales y is_single no funcionará con páginas individuales.

28 ene 2020 10:56:14
1

Por favor, intenta eliminar '' (comillas simples) del número de ID y funcionará:

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

Esta respuesta necesita una explicación más detallada

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

   if (is_page( 'Título de la Página' ) ): //puedes usar is_page(int ID de publicación/slug/título)
      # Haz lo que necesites
   endif;

}

add_action('parse_query', 'test_run');

complementando la respuesta de @Lucas Bustamante

28 ene 2020 09:11:23