Se l'ID del post corrisponde a questi ID allora esegui questo

12 gen 2017, 19:13:26
Visualizzazioni: 51.3K
Voti: 4

Sono ancora un principiante con PHP ma sto cercando di visualizzare un layout diverso nella mia pagina WordPress per un singolo ID post.

Pensavo fosse semplice ma ho provato diverse varianti del codice qui sotto. Includendo is_singular e senza il $post ecc. e ho finito le idee. Cosa posso fare? Cosa devo cercare? Qualcuno può aiutarmi?

<?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
Tutte le risposte alla domanda 3
0
12

Sembra quasi corretto. Diamo un'occhiata a is_single():

Funziona per qualsiasi tipo di post, eccetto allegati e pagine...

Quindi se l'ID fornito non è di un tipo di post page o attachment, puoi usare la funzione in questo modo:

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

Altrimenti, se l'ID è di un tipo di post page puoi usare is_page()

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

Se l'ID è quello di una pagina di attachment puoi usare is_attachment()

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

Infine, se non sei certo del tipo di post, potresti verificare l'oggetto global $post, assumendo che sia corretto:

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

La funzione get_the_ID() funzionerà indipendentemente dal tipo di post (che sia una pagina, un articolo o un custom post).

Puoi utilizzare questa funzione per eseguire il tuo controllo condizionale.

if ( get_the_ID() === 2578) {
     get_template_part('partials/content', 'challenge');
} 
else{
    // Aggiungi altre chiamate ai template, o condizioni aggiuntive come is_single, is_archive, ecc.
}?>

Da notare che questa funzione non funzionerà sugli archivi poiché non hanno ID.

18 mar 2017 07:35:32
Commenti

Questo è il metodo universalmente più efficace e dovrebbe essere la risposta accettata

zoltar zoltar
18 ott 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 lug 2018 14:50:18
Commenti

Puoi spiegare perché questa risposta è corretta?

user9447 user9447
20 lug 2018 17:52:17

funziona più o meno, ma c'è troppo <?php e ?>

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