Как определить single.php (но не single-portfolio.php)?

28 июл. 2012 г., 18:09:24
Просмотры: 37.5K
Голосов: 14

Когда я использую is_single(); в секции <head> для добавления стилей к навигации сайта, он корректно срабатывает на записях блога, но также срабатывает на записях типа "portfolio" (то есть на single-portfolio.php и single.php).

Как сделать так, чтобы он выполнялся только для single.php?

0
Все ответы на вопрос 2
2
28

Вы можете использовать следующий вариант:

if (is_singular('post')) {

    // ваш код здесь...

}

Где is_singular — это условная функция WordPress API для проверки существования типа записи. При необходимости вы также можете передать массив типов записей.

http://codex.wordpress.org/Function_Reference/is_singular

28 июл. 2012 г. 18:18:21
Комментарии

Это еще один очень хороший ответ! Оба ответа решают эту проблему. Этот кажется проще. Спасибо!

Atadj Atadj
28 июл. 2012 г. 18:19:23

Спасибо, всегда лучше использовать встроенные функции. Думаю, это должен быть принятый ответ.

Simon Simon
28 июл. 2012 г. 18:19:24
3

Вы можете попробовать что-то вроде (http://codex.wordpress.org/Function_Reference/get_post_type) :

чтобы проверить, что это не определенный тип записи:

if ( is_single() && 'portfolio' != get_post_type() ) {
  // ДЕЙСТВИЯ
}

или чтобы проверить, что это запись, а не тип записи:

if ( is_single() && 'post' == get_post_type() ) {
  // ДЕЙСТВИЯ
}
28 июл. 2012 г. 18:13:53
Комментарии

Спасибо! Это решает мою проблему, НО что если у меня есть "слайд-шоу", "новости", "портфолио" и множество других типов записей? Некоторые могут быть расширены с помощью плагинов, и я не уверен, сколько их будет и какие у них будут названия. Есть ли способ сделать это без исключения только "портфолио", а всего, что не является записью блога?

Atadj Atadj
28 июл. 2012 г. 18:15:35

@Flow: используйте get_post_type() для проверки на 'post'.

Geert Geert
28 июл. 2012 г. 18:17:07

Я обновил свой ответ ^^

Simon Simon
28 июл. 2012 г. 18:18:03