如何加载自定义single.php?

时间:2014-04-21 16:07:21

标签: php wordpress advanced-custom-fields

您好我有一个博客,其中的类别是新闻,事件和灵感。使用acf上的单选按钮选择这些类别。我想在single-news.php上加载新闻,而单个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');
}

使用acf时可以使用什么代替'in_category'?

谢谢你们。

3 个答案:

答案 0 :(得分:0)

/*
@  in_category(int [wp_category_id], int [post_id])
*/

$post = $wp_query->post;

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

答案 1 :(得分:0)

假设您的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的实际slu ,,这些只是猜测。重要的部分是get_field()函数调用,它将为给定的post id提取适当的acf字段。 Here是所有acf函数的列表,有很好的文档记录

答案 2 :(得分:0)

只需更改函数内的类别ID或slug,如

in_category('1')

in_category('news')