ACF5: используйте имена полей, а не ключи полей для идентификаторов элементов HTML - PullRequest
0 голосов
/ 09 июня 2019

Я взял плагин, который сильно зависит от расширенных пользовательских полей. Для дальнейшего развития я обновил ACF с версии 4 до последней версии (5.8.x).

Плагин включает в себя стили и сценарии, основанные на идентификаторах элементов HTML (например, входных данных), таких как acf-field-header_caption, где header_caption - это имя поля. Это хорошо работает с ACF 4, но в версии 5 для идентификаторов и классов используется гораздо менее дружественный к кодеру ключ поля (например, 5ac098bae96e4), например: acf-field-5ac098bae96e4. (Пользовательские поля добавляются в post_type и редактируются для этого post_type в серверной части.)

Пример:

Поле ввода в ACF v4 (что мне нужно):

<input type="text" id="acf-field-header_caption" class="text" name="fields[field_5ac098bae96e4]" value="" placeholder="">

То же поле в ACF v5 (что я не хочу):

<input type="text" id="acf-field-5ac098bae96e4" class="text" name="fields[field_5ac098bae96e4]" value="" placeholder="">

Есть ли способ вернуться к идентификаторам HTML, в которых используются имена полей, а не ключи полей?

1 Ответ

0 голосов
/ 10 июня 2019

Джон Хюбнер ответил на этот вопрос на форуме поддержки ACF (спасибо!).

Невозможно вернуться к старому классу и формату идентификатора. Это означает, что вам необходимо обновить пользовательские сценарии и CSS при обновлении до ACF 5.

Если кто-то предпочитает использовать имя поля, а не ключ поля для подобных селекторов jQuery или CSS, можно использовать атрибут data-name в оболочке div. Пример для селектора, ссылающегося на поле ввода header_caption сверху:

[data-name="header_caption"] input

(Это хорошо работает с текстовыми полями, радиополями и тому подобным, которые имеют несколько входов в оболочке.)

Я цитирую оригинальный ответ:

Нет, нет способа отменить значения идентификатора поля. Единственное место, где вы найдете имя поля, находится в оболочке div data-name = "field_name_here".

В дополнение к изменению идентификаторов и классов, даже их изменение, скорее всего, не поможет с JS. Если JS зависит от JF ACF, то, вероятно, все равно не будет работать. JS в ACF5 полностью отличается от ACF4, и любой пользовательский JS, взаимодействующий с ним, должен быть полностью перестроен.

...