确定wordpress中类别页面模板的类别标识符


Determine the category identifier of the category page template in wordpress

这是困扰我一天中大部分时间的事情。我为我女朋友的烹饪博客创建了一个新的category.php模板文件(你可以在这里看到)。

我想为分类页面提供一个特定的布局-而不是我使用的主题(Patchwork)提供的默认布局。

我搜索了一下,最终发现我可以使用Wordpress Codex中描述的Wordpress PHP函数<?php single_cat_title( $prefix, $display ); ?>。关键是要使用Wordpress短代码[catlist]。短代码可以是类别名称,也可以是类别id。

我以为就是这样,但不幸的是,我女朋友的博客是双语的,这意味着single_cat_title并不总是返回相同的值。它可能返回英语的recipe和法语的recette,两者都不能用于解析[catlist]中的类别。如果你认为这是双语博客的一个特例,其实不然……它也适用于具有相同名称的类别的博客(至于为什么要这样,我不知道…)

我能找到的所有其他方法都是特定于the_loop的,在我的例子中不适用。

无论如何,为了大家的利益,我想我应该在下面分享答案。当我找到它的时候,我很高兴!

检索当前对象标识符(可能是post, category, tag…)的方法是使用较低级别的Wordpress对象,即:

$wp_query->get_queried_object_id()

在Wordpress的类参考中描述。诀窍是要知道给你属性的方法名,而Wordpress不会告诉你。

最接近描述的方法是get_queried_object()(参见函数参考)。

我的页面的最终模板如下:

<?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(); ?>