Si la ID del post coincide con estas IDs entonces hacer esto

12 ene 2017, 19:13:26
Vistas: 51.3K
Votos: 4

Todavía soy principiante con PHP pero estoy intentando mostrar un diseño diferente en mi página de WordPress para un ID específico de post.

Pensé que sería simple pero he probado bastantes variaciones del código siguiente. Incluyendo is_single y sin el $post etc. y me he quedado sin ideas. ¿Qué puedo hacer? ¿Qué necesito buscar? ¿Alguien puede ayudarme?

<?php

if (is_single ($post = '2578')) {
    get_template_part('partials/content', 'challenge');
} 
elseif (is_single ($post = ''))  {
    get_template_part('partials/challenge/content', 'challenge-2');
    get_template_part('partials/challenge/content', 'categories');
    get_template_part('partials/challenge/content', 'snake-checklist');
    get_template_part('partials/challenge/content', 'timeline'); 
}?>
0
Todas las respuestas a la pregunta 3
0
12

Esto parece casi correcto. Echemos un vistazo a is_single():

Funciona para cualquier tipo de publicación, excepto adjuntos y páginas...

Entonces, si el ID proporcionado no es de un tipo de publicación page o attachment, puedes usar la función así:

if( is_single( 2578 ) ) {
    /* ... */
} else {
    /* ... */
}

De lo contrario, si el ID es de un tipo de publicación page, puedes usar is_page()

if( is_page( 2578 ) ) {
    /* ... */
}

Si el ID es de una página de attachment, puedes usar is_attachment()

if( is_attachment( 2578 ) ) {
    /* ... */
}

Finalmente, si no estás seguro del tipo de publicación, podrías verificar el objeto global $post, asumiendo que es correcto:

global $post;
if( is_object( $post ) && 2578 == $post->ID ) {
    /* ... */
}
12 ene 2017 20:00:50
1

La función get_the_ID() funcionará independientemente del tipo de publicación (ya sea una página, entrada o publicación personalizada).

Podrías usar esa función para realizar tu verificación condicional.

if ( get_the_ID() === 2578) {
     get_template_part('partials/content', 'challenge');
} 
else{
    // Agregar otras llamadas a plantillas, o condiciones adicionales, is_single, is_archive, etc.
}?>

Ten en cuenta que esta función no funcionará en archivos ya que no tienen ID's.

18 mar 2017 07:35:32
Comentarios

Este es el método más universalmente efectivo y debería ser la respuesta aceptada

zoltar zoltar
18 oct 2019 01:33:49
2
-1
<?php if( $post->ID == 21) { ?>
    <?php include('file_1.php'); ?>
<?php } else { ?>
    <?php include('file_2.php'); ?>
<?php } ?>
20 jul 2018 14:50:18
Comentarios

¿Te importaría explicar por qué esta respuesta es correcta?

user9447 user9447
20 jul 2018 17:52:17

funciona más o menos, pero hay demasiado <?php y ?>

Julian Wagner Julian Wagner
23 nov 2021 16:32:11