wordpress的in_category函数

最近在折腾新模板想让不同分类调用不同的single模板,放狗搜下很多答案,流传最广的就是这个:

  1. <?php
  2. $post = $wp_query->post;
  3. if ( in_category(‘7′) ) {
  4. include(TEMPLATEPATH . ‘/single-view.php’);
  5. }
  6. else if ( in_category(‘3′)) {
  7. include(TEMPLATEPATH . ‘/single-case.php’);
  8. }
  9. else if ( in_category(‘42′) ) {
  10. include(TEMPLATEPATH . ‘/single42.php’);
  11. }
  12. else {
  13. include(TEMPLATEPATH . ‘/archive-other.php’);
  14. }
  15. ?>

文中还给出了调用不同archive的方法,因为分类不是很多用category-id的方法已经解决所以那个不再这篇的讨论范畴,按照示例上写自己single.php得到

  1. <?php
  2. $post = $wp_query->post;
  3. if ( in_category( ’3′ )) {
  4. include(TEMPLATEPATH . ’/single-moban.php’);
  5. }
  6. else {
  7. include(TEMPLATEPATH . ’/single-other.php’);
  8. }
  9. ?>

测试下 不生效直接全部调用了single-other.php,想想应该是判断生效了为啥不调用第一个呢?困扰很久终于在codex上找到一个相同问题的哥们(估计是),并有人提出解决方案就是:改名。single-other改成other-single奇迹出现了,两个single都调用在指定的位置。汗!

但是如果想要更多的分类呢codex上给出用array的方法,比如我的single:

  1. <?php
  2. $post = $wp_query->post;
  3. if ( in_category( array(’3′,’4′,’5′,’6′,’7′) )) {
  4. include(TEMPLATEPATH . ’/moban-single.php’);
  5. }
  6. else {
  7. include(TEMPLATEPATH . ’/other-single.php’);
  8. }
  9. ?>

其中用id,名字,小名(slug名)都可以的,至此single改造告一段落!

发表评论