Если ID записи совпадает с этими ID, то выполнить следующее

12 янв. 2017 г., 19:13:26
Просмотры: 51.3K
Голосов: 4

Я все еще новичок в PHP, но пытаюсь отобразить другой макет для отдельной записи WordPress по её ID.

Я думал, что это будет просто, но я уже попробовал несколько вариаций кода ниже. Включая использование is_singular и без $post и т.д., но у меня закончились идеи. Что я могу сделать? На что мне нужно обратить внимание? Кто-нибудь может мне помочь?

<?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
Все ответы на вопрос 3
0
12

Это выглядит почти правильно. Давайте посмотрим на функцию is_single():

Работает для любого типа записи, кроме вложений и страниц...

Таким образом, если указанный ID не относится к типу записи page или attachment, то вы можете использовать функцию следующим образом:

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

В противном случае, если ID относится к типу записи page, вы можете использовать is_page()

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

Если ID относится к странице вложения (attachment), вы можете использовать is_attachment()

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

Наконец, если вы не уверены в типе записи, вы можете проверить глобальный объект global $post, предполагая, что он корректен:

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

Функция get_the_ID() будет работать независимо от типа записи (будь то страница, запись или произвольный тип записи).

Вы можете использовать эту функцию для выполнения условной проверки.

if ( get_the_ID() === 2578) {
     get_template_part('partials/content', 'challenge');
} 
else{
    // Добавьте другие вызовы шаблонов или дополнительные условия, такие как is_single, is_archive и т.д.
}?>

Стоит отметить, что эта функция не будет работать в архивах, так как у них нет ID.

18 мар. 2017 г. 07:35:32
Комментарии

Это наиболее универсальный и эффективный метод, который должен быть принятым ответом

zoltar zoltar
18 окт. 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 июл. 2018 г. 14:50:18
Комментарии

Не могли бы вы объяснить, почему этот ответ правильный?

user9447 user9447
20 июл. 2018 г. 17:52:17

вроде работает, но слишком много <?php и ?>

Julian Wagner Julian Wagner
23 нояб. 2021 г. 16:32:11