我可以创建一个与新定制帖子名称对应的分类术语吗?

时间:2015-04-07 作者:Mattaton

作为我试图解决的一个更广泛问题的一部分,我想知道是否可以自动创建一个与特定CPT的新帖子同名的分类术语。

想法如下。我会有一个卡通系列CPT。当我创建一个新的卡通系列文章时,卡通系列分类法的分类术语将使用与此新文章相同的名称创建。除了这个顶级术语外,还将创建两个子术语:“剧集”和“特辑”

因此,对于我创建的每个新卡通系列帖子,我总共会添加三个术语。其中一个与帖子同名,另两个位于帖子下方,这对于所有动画片系列来说都是一样的。

我马上就预见到了一些潜在的问题:
我能在分类法中找到完全相同的术语吗?类似于多次作为子项出现的剧集<分类法是否可以与CPT同名?理想情况下,两者都将被命名为卡通系列。子术语的slug必须与我在url中显示的相同。

GOOD domain/cartoon-series/<series-name1>/episodes/<episode-name>   
GOOD domain/cartoon-series/<series-name2>/episodes/<episode-name>  
BAD  domain/cartoon-series/<series-name2>/episodes-1/<episode-name>
“剧集”必须是同一个词,即使它们不是同一个词。我不确定这是否可能,即使他们在不同的顶级条款下。

所有这些都是为了解决这个问题:Need help with complex custom post type setup

如果你有其他想法,我洗耳恭听!

谢谢马特

2 个回复
SO网友:Devon Hicks

我最近遇到了类似的情况。虽然我目前记不清源代码,但下面的代码将为您选择的分类法创建一个新条目,它可以作为满足您需求的基础。

//Automatically creates a category in the case log and adds it to the post.

function add_title_as_category( $postid ) {
if ( defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE ) return;
   $post = get_post($postid);
if ( $post->post_type == \'case\') { // change \'post\' to any cpt you want to target
    $term = get_term_by(\'slug\', $post->post_name, \'case-log\');
if ( empty($term) ) {
  $add = wp_insert_term( $post->post_title, \'case-log\', array(\'slug\'=> $post->post_name) );
  if ( is_array($add) && isset($add[\'term_id\']) ) {
    wp_set_object_terms($postid, $add[\'term_id\'], \'case-log\', true );
  }
}
}}add\\u action(\'save\\u post\',\'add\\u title\\u as\\u category\');

SO网友:Slam

解决方案:卷影分类库

https://github.com/mrbobbybryant/shadow-taxonomy

这看起来是解决此问题的一个强健的解决方案,其中包括用于创建、删除和评估链接的wp cli支持。

我还没有测试它,但它似乎是这个问题的完美解决方案。

结束

相关推荐