我有一个自定义帖子,我希望通过自定义分类法进行分类。我希望分类法本身依赖于另一个自定义帖子类型的条目。是否可以通过自定义帖子类型的条目填充分类法,或者这是我必须手动完成的事情?
插件、代码片段、替代方法指南将不胜感激。
使用示例编辑:
我有一个自定义的帖子类型,基本上就像一个页面。当我创建一个时,我希望它用它的标题填充一个自定义分类法。丹尼尔·德沃金的回答是我一直在考虑的解决方案。
我有一个自定义帖子,我希望通过自定义分类法进行分类。我希望分类法本身依赖于另一个自定义帖子类型的条目。是否可以通过自定义帖子类型的条目填充分类法,或者这是我必须手动完成的事情?
插件、代码片段、替代方法指南将不胜感激。
使用示例编辑:
我有一个自定义的帖子类型,基本上就像一个页面。当我创建一个时,我希望它用它的标题填充一个自定义分类法。丹尼尔·德沃金的回答是我一直在考虑的解决方案。
我总是用这样的东西:
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\' );
}
}
}
}
但这很容易变得不一致(即:如果你删除一篇文章,这个词就不会被删除)跟进@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对象中没有该类型(无论出于何种原因)。我改编了MZAweb和codeprokanner的代码,并添加了更多的一致性检查,以在自定义帖子和自定义分类术语之间提供严格的一对一关系。看见this answer.