как загрузить пользовательский single.php?

Привет, у меня есть блог, в котором есть категории новостей, событий и вдохновения. Эти категории выбираются с помощью переключателей на acf. Я хочу загружать новости на single-news.php, а события — на single-events.php, а вдохновение — на single-inspiration.php.

можно ли использовать поля acf для этого? Я столкнулся с этим кодом с категориями WordPress по умолчанию для загрузки пользовательского single.php

$post = $wp_query->post;
if (in_category('1')) {
    include(TEMPLATEPATH.'/single1.php');
} elseif (in_category('2')) {
    include(TEMPLATEPATH.'/single2.php');
} else {
    include(TEMPLATEPATH.'/single_default.php');
}

что можно использовать вместо «in_category» при использовании acf?

Спасибо, парни.


person x0x    schedule 21.04.2014    source источник
comment
я считаю, что wordpress достаточно «умен», чтобы определить правильный шаблон для пользовательских типов сообщений, если вы придерживаетесь соглашения об именах single-{custom type name}.php, что, похоже, вы сделали. это не использует ваши пользовательские шаблоны?   -  person celeriko    schedule 21.04.2014


Ответы (2)


предполагая, что ваше поле acf называется acf_category, вы можете сделать это..

$post = $wp_query->post;

$post_cat = get_field('acf_category', $post->ID);
switch($post_cat){
  case "news":
    include(TEMPLATEPATH.'/single-news.php');
    break;
  case "events":
    include(TEMPLATEPATH.'/single-events.php');
    break;
  case "inspiration":
    include(TEMPLATEPATH.'/single-inspriation.php');
    break;
  default:
    include(TEMPLATEPATH.'/single.php');

}

обратите внимание, что вам, вероятно, придется изменить случаи switch (это также можно сделать с помощью if/else), чтобы отразить фактические слаги вашего acf, это только догадки. Важной частью является вызов функции get_field(), который извлечет соответствующее поле acf для заданного идентификатора сообщения. Здесь приведен список всех функций acf, очень хорошо задокументированных

person celeriko    schedule 21.04.2014

просто измените идентификатор категории или слаг внутри функции, например

in_category('1')

to

in_category('news')
person vikram    schedule 21.04.2014