Se l'ID del post corrisponde a questi ID allora esegui questo
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');
}?>
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 ) {
/* ... */
}

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.
