您需要检查$_POST 对于正在提交的相同数据,也可以使用字段(或者更好的字段)查找name 字段输入的属性-它可能与现有的键匹配。例如:。
function add_sermons_automatically($post_ID) {
    if ( ( (isset($_POST[\'imic_vimeo_video\'])) && ($_POST[\'imic_vimeo_video\'] != \'\') ) 
      || ( (isset($_POST[\'imic_mp4_video\'])) && ($_POST[\'imic_mp4_video\'] != \'\') ) 
      || ( (isset($_POST[\'imic_ogg_video\'])) && ($_POST[\'imic_ogg_video\'] != \'\') ) 
      || ( (isset($_POST[\'imic_webm_video\'])) && ($_POST[\'imic_webm_video\'] != \'\') 
      || ( (isset($_POST[\'imic_youtube_video\'])) && ($_POST[\'imic_youtube_video\'] != \'\') ) ) {
        // (see alternative below)
        $sermons_cat = array(28);
        wp_set_object_terms( $post_ID, $sermons_cat, \'sermon-category\');
    } else {
      // optionally remove the cateogory (see alternative below)
      // wp_set_object_terms( $post_ID, \'\', \'sermon-category\');
    }
}
 如果以这种方式检查,而不是检查数据库,那么如果删除了所有视频值,也可以自动删除类别。
请注意,这样做将覆盖选中的任何其他类别,如果要分配多个类别,则需要执行以下操作wp_get_object_terms 首先,在(重新)设置类别之前,将其添加到该数组中。例如:。
$terms = wp_get_object_terms( $post_ID, \'sermon-category\');
$catids = array();
foreach ($terms as $term) {$catids[] = $term->term_id;}
$catids[] = \'28\'; // vido sermon category
wp_set_object_terms($post_ID, $catids, \'sermon-category\');
 自动删除视频类别,同时保留其他类别类似:
$terms = wp_get_object_terms( $post_ID, \'sermon-category\');
$catids = array();
foreach ($terms as $term) {
    if ($term_id != 28) {$catids[] = $term->term_id;}
}
wp_set_object_terms($post_ID, $catids, \'sermon-category\');
 最后,您应该在发布和更新(保存)上执行此操作。。。
add_action(\'publish_sermon\', \'add_sermons_automatically\');
add_action(\'save_sermon\', \'add_sermons_automatically\');