创建新产品时,自动将其分配给所有自定义分类WooCommerce

时间:2020-02-28 作者:Leandro Andrade

我有一个名为Location的自定义分类法,上面有很多父类别和子类别来标记产品在哪个位置可用。它们在大多数类别中都是可用的,所以我最终花了太多时间来勾选它们。

是否可以包含一个勾选所有类别的函数,而我只需要取消勾选不可用的位置?

1 个回复
SO网友:Antti Koskinen

对于不使用块编辑器的帖子类型,可以使用wp_terms_checklist_args 筛选以操作层次分类法的选定术语。您可以使用过滤器设置预先选择的术语,例如,

function auto_check_hierarchial_terms_on_new_post( $args, $post_id ) {
  // is it new post?
  if ( \'auto-draft\' !== get_post_status($post_id) ) {
    return $args;
  }
  // is it my taxonomy?
  if ( \'my_custom_taxonomy\' !== $args[\'taxonomy\'] ) {
    return $args;
  }
  // let\'s not overwrite anything by accident
  if ( ! empty( $args[\'selected_cats\'] ) ) {
    return $args;
  }
  // get existing terms
  $terms = get_terms( array(
    \'taxonomy\' => $args[\'taxonomy\'],
    \'hide_empty\' => false,
  ) );
  if ( ! $terms || ! is_array( $terms ) ) {
    return $args;
  }
  // pre select all terms
  $args[\'selected_cats\'] = array();
  foreach ($terms as $term) {
    $args[\'selected_cats\'][] = $term->term_id;
  }
  return $args;
}    
add_filter(\'wp_terms_checklist_args\', \'auto_check_hierarchial_terms_on_new_post\', 10, 2);
有一个note on the filter, 对于WP 5块编辑器,它似乎已过时。