2014-07-13 93 views
0

这是我在一天中更好的时候困扰了我的东西。我为我女朋友的烹饪博客创建了一个新的category.php模板文件(你可以看到它here)。确定wordpress中的类别页面模板的类别标识

我想要一个类别页面的特定布局 - 不是由我使用的主题(拼布)提供的默认布局。

我搜索了一下,最终发现我可以使用Wordpress PHP功能<?php single_cat_title($prefix, $display); ?>,如Wordpress Codex中所述。当时的重点是使用WordPress的简码[catlist]。简码可以采用类别名称或类别ID。

我认为这将是它,但不幸的是我女朋友的博客是双语的,这意味着single_cat_title并不总是返回相同的价值。它可能会返回英语中的recipe和法语中的recette,这两种都不能用于解决[catlist]中的类别。如果你认为这是双语博客的一个角落案例,那不是......它也适用于具有相同名称的类别的博客(至于为什么你会这样做,我不知道......)

我能找到的所有其他方法都是专门针对the_loop而不适用于我的情况。

无论如何,我以为我会分享下面的答案,为大家的利益。当我找到它时,它让我的一天变得美好!

回答

0

检索当前对象标识符的方式(无论是交,类别,标签...)是使用较低级的Wordpress对象和即:

$wp_query->get_queried_object_id() 

在WordPress的的class reference说明。诀窍是知道给你的属性的方法名称和WordPress的不告诉你。

最接近描述的方法是get_queried_object()(参见function reference)。

为我的网页的最后模板如下:

<?php 
/** 
* The Template for displaying posts in the category view. 
* 
*/ 
get_header(); ?> 

     <div id="primary" class="site-content"> 
         <h1><?php single_cat_title("");?></h1> 
      <div id="content" role="main"> 
<?php echo do_shortcode('[catlist id='.$wp_query->get_queried_object_id().' orderby=date order=DESC excerpt=yes excerpt_size=25 thumbnail=yes numberposts=-1 template=del]'); ?>     
      </div><!-- #content --> 
     </div><!-- #primary .site-content --> 

<?php get_sidebar(); ?> 
<?php get_footer(); ?>