ACF过滤器可将所有类别从选择中排除

时间:2019-10-16 12:22:50

标签: php wordpress filter advanced-custom-fields

我正在为WordPress使用“ Frontend Submit Pro”和“ ACF(非专业)插件”。 我正在使用这些插件为我的用户创建前端帖子。

我有200多个类别,因此我想让用户更轻松地选择类别。我将创建多个表单,每个表单都会有一些类别可供用户选择。

现在,我使用以下过滤器从表单中排除某些类别。

add_filter('acf/fields/taxonomy/query/name=kathgories', 'exclude_categories', 10, 2);

function exclude_categories( $args, $field ) {
    global $uncategorized_id;
    $args['exclude'] = array(290,287,283,289,281,291,286,280,284,279); //the IDs of the excluded terms
    return $args;
}

因为我有很多类别,所以我很难排除上面代码中的200个类别。

所以我想要一个过滤器,该过滤器将排除所有类别,并且只包括我希望在每种形式中显示的5-10个类别。 我不知道该怎么做,所以我问是否有人可以提供帮助。

我还希望每个过滤器仅适用于一种形式。我需要一些方法将过滤器链接到正确的表单。(可能是通过链接或表单名称)

2 个答案:

答案 0 :(得分:0)

使用过滤器解决了该问题。

add_action( 'init', 'get_term_ids' );
function get_term_ids() {
    global $uncategorized_id;
    $u = get_term_by( 'slug', 'uncategorized', 'product_cat' );
    $uncategorized_id = $u->term_id;
}

add_filter('acf/fields/taxonomy/query/name=kathgories', 'exclude_categories', 10, 2);
function exclude_categories( $args, $field ) {
  global $uncategorized_id;
  $args['exclude'] = array($uncategorized_id); //the IDs of the excluded terms
  return $args;
}

答案 1 :(得分:0)

回答我的问题。

在上面的过滤器中,我将“排除”更改为“包含”,似乎完全可以实现我想要的功能。

它仅以表格形式显示我给它的类别。

对于那些在“选择”中显示类别的人,请使用以下代码。

add_filter('acf/fields/taxonomy/query/name=kathgories', 'include_categories', 10, 2);

function include_categories( $args, $field ) {
      global $uncategorized_id;
      $args['include'] = array(290,287,283,289,281,291,286,280,284,279); //the IDs of the excluded terms
      return $args;
}

对于在“复选框”中显示类别的用户,请使用以下代码。

add_filter('acf/fields/taxonomy/wp_list_categories/name=kathgories', 'my_taxonomy_args', 10, 2);

function my_taxonomy_args( $args, $field ){
      $args['include'] = array(197,247,245,250,246,248,249,251);//the IDs of the excluded terms
      return $args;
}

也更改/name=kathgories' 与您自己的ACF分类标准字段名称。

因此,有了这一更改,我正在回答第二个问题。