Dacă ID-ul articolului se potrivește cu aceste ID-uri atunci fă asta

12 ian. 2017, 19:13:26
Vizualizări: 51.3K
Voturi: 4

Sunt încă începător în PHP dar încerc să afișez un layout diferit pentru pagina mea WordPress pentru un ID specific de articol.

M-am gândit că ar fi fost simplu dar am încercat destul de multe variații ale codului de mai jos. Inclusiv is_single și fără $post etc. și am rămas fără inspirație. Ce pot face? Ce trebuie să caut? Mă poate ajuta cineva?

<?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
Toate răspunsurile la întrebare 3
0
12

Acesta pare aproape corect. Să ne uităm la is_single():

Funcționează pentru orice tip de postare, cu excepția atașamentelor și paginilor...

Deci, dacă ID-ul dat nu este al unui tip de postare page sau attachment, atunci puteți folosi funcția astfel:

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

În caz contrar, dacă ID-ul este al unui tip de postare page, puteți folosi is_page()

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

Dacă ID-ul este al unei pagini de tip attachment, puteți folosi is_attachment()

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

În final, dacă nu sunteți sigur de tipul postării, puteți verifica obiectul global $post, presupunând că acesta este corect:

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

Funcția get_the_ID() va funcționa indiferent de tipul de postare (pagina, articol sau postare personalizată).

Puteți utiliza această funcție pentru a vă efectua verificarea condițională.

if ( get_the_ID() === 2578) {
     get_template_part('partials/content', 'challenge');
} 
else{
    // Adăugați alte apeluri de template sau condiții suplimentare, is_single, is_archive, etc.
}?>

Este important de menționat că această funcție nu va funcționa pe arhive deoarece acestea nu au ID-uri.

18 mar. 2017 07:35:32
Comentarii

Aceasta este cea mai universal eficientă metodă și ar trebui să fie răspunsul acceptat

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 iul. 2018 14:50:18
Comentarii

Te superi să explici de ce acest răspuns este corect?

user9447 user9447
20 iul. 2018 17:52:17

funcționează într-un fel, dar are prea mult <?php și ?>

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