Exclude câmpuri din ACF

Următoarea versiune de ACF introduce niște tipuri noi de câmpuri, numite Clone. Asta permite reutilizarea unui câmp sau a unui grup de câmpuri în mai multe locuri.

Doar că apar două probleme: nu mai poți adăuga condiționale și nu poți exclude doar anumite câmpuri clonate. Despre cum se rezolvă problema condiționalelor am scris aici. Mai departe îți voi arăta cum poți exclude un câmp.

1. Adăugarea setărilor în admin

Pentru că e un scenariu ceva mai generic, avem nevoie de o soluție la fel de generică. Prin urmare, adăugăm întâi o setare ce va fi vizibilă la editarea unui câmp de timpul clone:

<?php
add_action('acf/render_field_settings/type=clone', function ($field) {
  acf_render_field_wrap([
    'label' => 'Exclude Clone Fields Item',
    'instructions' => 'One field per row',
    'type' => 'textarea',
    'name' => 'exclude_clone_fields',
    'prefix' => $field['prefix'],
    'value' => isset($field['exclude_clone_fields']) ? $field['exclude_clone_fields'] : '',
    'prepend' => '',
    'append' => '',
  ], 'tr');
});

Asta ne adaugă următoarea setare în admin:

2016-08-13__04_53

2. Excluderea câmpurilor

add_filter('acf/load_field/type=clone', function ($field) {
  if (!empty($field['sub_fields']) && !empty($field['exclude_clone_fields'])) {
    $excluded = explode("\n", $field['exclude_clone_fields']);
    $excluded = array_map('trim', $excluded);

    foreach ($field['sub_fields'] as $i => $sub_field) {
      if (in_array($sub_field['name'], $excluded)) {
        unset($field['sub_fields'][$i]);
      }
    }

    $field['sub_fields'] = array_values($field['sub_fields']);
  }
  return $field;
}, 99);

3. Atât

Tot ce trebuie să faci acum este ca, atunci când editezi un câmp de tip Clonă, să adaugi în noua setare câte un nume/rând. Și cam asta e tot.

Ți-a plăcut articolul? Lasă un comentariu!

You can insert code snippets using BBcode:
[js].[/js] [html].[/html] [php].[/php] [css].[/css]
You can also use some HTML tags:
<blockquote>.</blockquote> <code>.</code> <a href="">.</a> <strong>.</strong> <em>.</em>

windows apple dropbox facebook twitter