有没有办法让子帖子继承父帖子术语?

时间:2014-08-20 作者:dericcain

我有一些从父母到大孙子的自定义帖子。我从自定义分类法中为父帖子指定了一个术语,我希望所有子帖子都能继承该术语。有没有办法做到这一点?或者,我可以把孩子的术语传给父母吗?否则,我将不得不对每个职位使用该术语,这将是一项非常艰巨的任务。以下是我的结构:

-Staff Training, Student Curriculum, Resources, Training Plans (These are terms)
---Tracks (CPT)
------Topics (CPT)
---------Courses (CPT)
------------Resources (CPT)
正如您所看到的,每个资源都必须在一个课程中。每门课程都必须有一个主题。每个主题都必须在一个轨道上。而且,每一条赛道都有一个来自员工培训、学生课程、资源或培训计划自定义分类的术语。现在,培训计划的不同之处在于,它将主要包含整合在一起并已与另一个术语关联的资源。因此,这意味着一些资源将有多个术语。但是,曲目、主题和课程只有一个学期。

我想我必须得到父母CPT的所有孩子,并以这种方式应用这个术语。或者,也许我将其应用于资源,并允许其通过父级向上传播?

你能负担得起的任何帮助都会很好!

1 个回复
SO网友:Howdy_McGee

我还没有对此进行过广泛的测试,但它在发布和更新方面都起到了作用。发布或更新帖子时,它会检查是否设置了父项,获取父项以获取所有父项分类法,然后循环并按分类法将子项分类法设置为父项分类法。

/** Set Child Terms to Parent Terms **/
function set_parent_terms( $post_id, $post ) {
    if ( \'publish\' === $post->post_status && $post->post_parent > 0 ) {
        $parent = get_post($post->post_parent);

        if(!empty($parent)){
            $taxonomies = get_object_taxonomies( $parent->post_type );
            foreach ( (array) $taxonomies as $taxonomy ) {
                $terms = wp_get_post_terms( $parent->ID, $taxonomy );
                if ( !empty( $terms ) ) {
                    $termArr = array_map(create_function(\'$obj\', \'return $obj->term_id;\'), $terms);
                    $tmp = wp_set_object_terms( $post_id, $termArr, $taxonomy, true );
                }
            }
        }
    }
}
add_action( \'save_post\', \'set_parent_terms\', 100, 2 );

结束

相关推荐