在这件事上花了四个多小时,但仍然碰壁,希望StackExchange知道得更好/
基本上,我有一些Woo产品,每当添加一个新产品时,它的名称应该保存为我注册的自定义分类法的一个术语(“模型”),但只有当它在某个产品类别中时,比如说类别的名称应该是“Keyboards”。
现在,每次我添加一个新产品,例如,一个名为“最佳键盘”的键盘,并在产品类别metabox中检查“键盘”术语,“最佳键盘”也会自动添加为“型号”分类中的一个术语(我需要显示与其他各种产品的兼容性)。This 在我试图实现的目标中非常有用,我对代码进行了一些删减:
add_action( \'save_post\', \'add_custom_terms\' );
function add_custom_terms( $post_id ) {
if ( \'product\' === get_post_type( $post_id ) ) {
$term_title = get_the_title( $post_id );
$term_slug = get_post( $post_id )->post_name;
$existing_terms = get_terms( \'compatibility\', array(
\'hide_empty\' => false
)
);
foreach( $existing_terms as $term ) {
if ( $term->description === $post_id ) {
wp_update_term( $term->term_id, \'compatibility\', array(
\'name\' => $term_title,
\'slug\' => $term_slug
)
);
return;
}
}
wp_insert_term( $term_title, \'compatibility\', array(
\'slug\' => $term_slug,
\'description\' => $post_id
)
);
}
}
这就是我被困的地方。它的工作原理与预期完全一样,但它总是将产品名称添加到模型分类中,而不管是否检查了术语“键盘”。
所以,我的基本问题是-如何设置条件,使其仅在产品是键盘时发生?
从我收集的信息来看,似乎我应该使用两个钩子,“save\\u post”和“publish\\u post”,因为“save\\u post”不知道在发布帖子/产品之前是否选中了“Keyboards”复选框,因此无法将其作为向自定义分类法添加术语的条件,但我真的不知道如何组合这两个钩子。如果有人能帮忙,我欠你一个人情!