从自定义帖子填充分类

时间:2011-05-26 作者:Levi McCallum

我有一个自定义帖子,我希望通过自定义分类法进行分类。我希望分类法本身依赖于另一个自定义帖子类型的条目。是否可以通过自定义帖子类型的条目填充分类法,或者这是我必须手动完成的事情?

插件、代码片段、替代方法指南将不胜感激。

使用示例编辑:

我有一个自定义的帖子类型,基本上就像一个页面。当我创建一个时,我希望它用它的标题填充一个自定义分类法。丹尼尔·德沃金的回答是我一直在考虑的解决方案。

3 个回复
最合适的回答,由SO网友:MZAweb 整理而成

我总是用这样的东西:

add_action(\'save_post\', \'mdz_correlate_casos_taxonomy\');
function mdz_correlate_casos_taxonomy( $post_id ){

    if ( defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE ) 
        return $post_id;

    if ( \'YOUR CUSTOM POST TYPE\' == $_POST[\'post_type\'] ){
        if (!wp_is_post_revision($post_id)){
            if (!term_exists( $_POST["post_title"], \'YOUR CUSTOM TAXONOMY\' )){

                $termid = wp_insert_term( $_POST["post_title"], \'YOUR CUSTOM TAXONOMY\' );

            }
        }
    }

}
但这很容易变得不一致(即:如果你删除一篇文章,这个词就不会被删除)

SO网友:codeprokanner

跟进@MZAweb的答案。您还可以自动删除术语,如下所示:

add_action( \'before_delete_post\', \'cpk_delete_term\' );
function cpk_delete_term( $post_id ) {

  $post = get_post( $post_id );

  if ( term_exists( $post->post_title, \'YOUR_TAXONOMY_NAME\' ) ) {
    $term = get_term_by( \'name\', $post->post_title, \'YOUR_TAXONOMY_NAME\' );
    wp_delete_term( $term->term_id, \'YOUR_TAXONOMY_NAME\' );
  }

}
注意,我们没有在这里检查post类型,因为在尝试获取该信息时,post对象中没有该类型(无论出于何种原因)。

SO网友:Sean

我改编了MZAweb和codeprokanner的代码,并添加了更多的一致性检查,以在自定义帖子和自定义分类术语之间提供严格的一对一关系。看见this answer.

结束

相关推荐