Фильтр ACF для исключения всех категорий из выбранного - PullRequest
0 голосов
/ 16 октября 2019

Я использую плагины "Frontend Submit Pro" и "ACF (не pro)" для WordPress. Я использую эти плагины, чтобы сделать создатель поста внешнего интерфейса для моих пользователей.

У меня более 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 голосов
/ 19 октября 2019

Отвечая на мой вопрос.

Я изменил «исключить» на «включить» в фильтре выше, и он, кажется, делает именно то, что я хотел.

Он показывает только те категории, которые я даю в форме.

Для тех, кто отображает категории в «выберите», используйте следующий код.

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.

Итак, с этим изменением я отвечаю на второй вопрос.

0 голосов
/ 16 октября 2019

Решено с помощью фильтра.

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;
}
...