添加类别父级的正文类

时间:2013-10-02 作者:Andrew Smart

我不是一个程序员,但我通常通过研究并找到解决方案来使用Wordpress。这次我找不到我需要做的事情,所以我试图拼凑一些代码-我试图做的是,当我在类别存档中时,我想添加类别父级的body类。这是我尝试过的,除了我正在获取parents类别ID之外,它也在发挥作用,但我想要slug/nicename:

add_filter(\'body_class\',\'hw_custom_body_class\');
  function hw_custom_body_class($classes){
  if(is_category()){
  $categories = get_the_category();
  $category = strtolower($categories[0]->category_parent);
  $classes[]=\'category-\'.$category;
  return $classes;    }}

2 个回复
SO网友:fuxia

使用get_ancestors() 获取父条款。这是我的插件的摘录T5 Parent Terms in body_class:

    $ancestors = get_ancestors(
        get_queried_object_id(),
        get_queried_object()->taxonomy
    );

    if ( empty ( $ancestors ) )
    {
        return $classes;
    }

    foreach ( $ancestors as $ancestor )
    {
        $term          = get_term( $ancestor, get_queried_object()->taxonomy );
        $new_classes[] = esc_attr( "parent-$term->taxonomy-$term->slug" );
    }
这将适用于任何分类法,而不仅仅是类别。

SO网友:Badan

我在类别的存档页面中显示父类别的唯一方法是采用以下方法:https://yonkov.github.io/post/add-parent-category-to-the-body-class/

基本上,您需要创建一个类变量,然后将其传递给body类:

<?php
    $this_category = get_category($cat);
    //If category is parent, list it
    if ($this_category->category_parent == 0) {
        $this_category->category_parent = $cat;
    } else { // If category is not parent, list parent category
        $parent_category = get_category($this_category->category_parent);
        //get the parent category id
        $ParentCatId = $parent_category->cat_ID;
        }
        $childcategories = array();
        $catx = $ParentCatId;
        $cats = get_categories(\'parent=\'.$catx);
        foreach($cats as $cat) {
            $childcategories[] = $cat->term_id; } ;
        //if it is a child category, add a class with the parent category id
        if( is_category( $childcategories ) ) {
            $class = \'parent-category-\'.$ParentCatId;
        }
?> 

结束

相关推荐

private functions in plugins

我开发了两个插件,其中一个功能相同(相同的名称,相同的功能)。当试图激活两个插件时,Wordpress会抛出一个错误,因为它不允许我以相同的名称定义函数两次。有没有一种方法可以使这个函数只对插件私有,而不使用面向对象编程,也不简单地重命名函数?我不想使用OOP,因为我首先要学习它。此外,我不想重命名该函数,因为我可能也想在其他插件中使用它,而重命名感觉不太合适。