From 2fadfea4287a1050bf2840ec1d0129324a2d5d0d Mon Sep 17 00:00:00 2001 From: HerrVigg Date: Wed, 21 Dec 2022 16:11:50 +0100 Subject: [PATCH 1/3] Generalize ACF config and simplify options The ACF options are difficult to grasp: - it should not be required to enter the name of the pages where the LSB are shown, these should be defined by the module. - the standard ACF input and text fields should always be supported. We should deprecate the ACF-QTX extended fields. Moreover the `shim` element used to set the LSB anchors is too fuzzy. It may appear several times with same id in the DOM. Also, it's unclear how the display hooks are handled, as they should not be dependent on the options. Refactor the ACF configuration to list clearly the supported pages, anchors and display fields. Remove the options for standard support (always true) and the list of pages for LSB (the config should be updated). --- dist/modules/acf.js | 2 +- modules/acf/js/qtranslatex.js | 15 -- modules/acf/src/qtx_module_acf_admin.php | 243 +++++++++++------------ qtranslate.php | 2 +- 4 files changed, 119 insertions(+), 143 deletions(-) diff --git a/dist/modules/acf.js b/dist/modules/acf.js index bc3c5041..62e85f56 100644 --- a/dist/modules/acf.js +++ b/dist/modules/acf.js @@ -1 +1 @@ -(()=>{var t={817:()=>{var t=jQuery;t(window).on("load",(function(){var e=qTranslateConfig.js.get_qtx();e.enableLanguageSwitchingButtons("block"),window.acf_qtranslate_translate_standard_field_types&&("acf-field-group"!==t("#post_type").val()?(t.each({text:"input:text",textarea:"textarea"},(function(a,n){acf.findFields({type:a}).each((function(){t(this).find(n).each((function(){e.hasContentHook(this)||e.addContentHookB(this)}))}))})),acf.addFilter("wysiwyg_tinymce_settings",(function(t,a,n){if("wysiwyg"===n.type){var i=n.$input()[0];e.addContentHookB(i);var r=t.init_instance_callback;t.init_instance_callback=function(t){void 0!==r&&r(),e.attachEditorHook(t)}}return t})),acf.findFields().each((function(){t(this).find(".acf-label > label, .acf-label > p.description, .acf-input > p.description").each((function(){e.hasContentHook(this)||e.addDisplayHook(this)}))}))):acf.addAction("open_field_object",(function(t){t.$el.find("input:text, textarea").each((function(){var t=this;!e.hasContentHook(t)&&function(t){return t.id.match(/acf_fields-(\d+|field_[a-z0-9]+)-(label|instructions|default_value)/)}(t)&&e.addContentHookB(t)}))})))}))},719:()=>{var t=jQuery;acf.registerFieldType(acf.models.FileField.extend({type:"qtranslate_file",$control:function(){return this.$(".acf-file-uploader.current-language")},$input:function(){return this.$('.acf-file-uploader.current-language input[type="hidden"]')},render:function(t){t=this.validateAttachment(t),this.$control().find("img").attr({src:t.icon,alt:t.alt,title:t.title}),this.$control().find('[data-name="title"]').text(t.title),this.$control().find('[data-name="filename"]').text(t.filename).attr("href",t.url),this.$control().find('[data-name="filesize"]').text(t.filesizeHumanReadable);var e=t.id||"";acf.val(this.$input(),e),e?this.$control().addClass("has-value"):this.$control().removeClass("has-value")}})),acf.registerFieldType(acf.models.ImageField.extend({type:"qtranslate_image",$control:function(){return this.$(".acf-image-uploader.current-language")},$input:function(){return this.$('.acf-image-uploader.current-language input[type="hidden"]')},render:function(t){t=this.validateAttachment(t),this.$control().find("img").attr({src:t.url,alt:t.alt,title:t.title});var e=t.id||"";this.val(e),e?this.$control().addClass("has-value"):this.$control().removeClass("has-value")}})),acf.registerFieldType(acf.models.PostObjectField.extend({type:"qtranslate_post_object",$control:function(){return this.$(".acf-post-object.current-language")},$input:function(){return this.$(".acf-post-object.current-language select")},initialize:function(){var e=this,a=this.$input();if(this.inherit(a),this.get("ui")){var n=this.get("ajax_action");n||(n="acf/fields/"+this.get("type")+"/query"),this.select2=[],this.$(".acf-post-object select").each((function(){var a=acf.newSelect2(t(this),{field:e,ajax:e.get("ajax"),multiple:e.get("multiple"),placeholder:e.get("placeholder"),allowNull:e.get("allow_null"),ajaxAction:n});e.select2.push(a)})),this.$(".acf-post-object span.select2-selection").addClass("qtranxs-translatable")}},onRemove:function(){if(this.select2)for(var t=0;t{var t=jQuery,e=t("body"),a=function(e){var a=t(".multi-language-field");a.find(".current-language").removeClass("current-language"),a.find('[data-language="'+e+'"]').addClass("current-language"),a.find('input[data-language="'+e+'"], textarea[data-language="'+e+'"]')};e.on("click",".qtranxs-lang-switch",(function(){var e=t(this).attr("lang");a(e)})),e.on("click",".wp-switch-editor[data-language]",(function(){var e=t(this).parent(".multi-language-field"),a=t(this).data("language");return e.find(".current-language").removeClass("current-language"),e.find('[data-language="'+a+'"]').addClass("current-language"),e.find('input[data-language="'+a+'"], textarea[data-language="'+a+'"]').focus(),t('.qtranxs-lang-switch[lang="'+a+'"]:first').trigger("click"),!1})),e.on("focusin",".multi-language-field input, .multi-language-field textarea",(function(){t(this).parent(".multi-language-field").addClass("focused")})),e.on("focusout",".multi-language-field input, .multi-language-field textarea",(function(){t(this).parent(".multi-language-field").removeClass("focused")})),e.on("click",".wp-editor-tabs .wp-switch-editor",(function(){var e=t(this).parents(".multi-language-field"),a=t(this).hasClass("switch-tmce")?"tmce":"html";e.find(".wp-editor-tabs .wp-switch-editor.switch-"+a).not(this).each((function(){var e=t(this).attr("data-wp-editor-id");e&&window.switchEditors.go(e,a)}))})),t((function(){if(qTranslateConfig.LSB){var e=qTranslateConfig.js.get_qtx().getActiveLanguage();if(e){a(e);var n=t(".multi-language-field");n.find(".current-language").removeClass("current-language"),n.find('[data-language="'+e+'"]').addClass("current-language")}}}))}},e={};function a(n){var i=e[n];if(void 0!==i)return i.exports;var r=e[n]={exports:{}};return t[n](r,r.exports,a),r.exports}a.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return a.d(e,{a:e}),e},a.d=(t,e)=>{for(var n in e)a.o(e,n)&&!a.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),(()=>{"use strict";a(719),a(174),a(817)})()})(); \ No newline at end of file +(()=>{var t={817:()=>{var t=jQuery;t(window).on("load",(function(){var e=qTranslateConfig.js.get_qtx();e.enableLanguageSwitchingButtons("block"),"acf-field-group"!==t("#post_type").val()?(t.each({text:"input:text",textarea:"textarea"},(function(a,n){acf.findFields({type:a}).each((function(){t(this).find(n).each((function(){e.hasContentHook(this)||e.addContentHookB(this)}))}))})),acf.addFilter("wysiwyg_tinymce_settings",(function(t,a,n){if("wysiwyg"===n.type){var i=n.$input()[0];e.addContentHookB(i);var r=t.init_instance_callback;t.init_instance_callback=function(t){void 0!==r&&r(),e.attachEditorHook(t)}}return t}))):acf.addAction("open_field_object",(function(t){t.$el.find("input:text, textarea").each((function(){var t=this;!e.hasContentHook(t)&&function(t){return t.id.match(/acf_fields-(\d+|field_[a-z0-9]+)-(label|instructions|default_value)/)}(t)&&e.addContentHookB(t)}))}))}))},719:()=>{var t=jQuery;acf.registerFieldType(acf.models.FileField.extend({type:"qtranslate_file",$control:function(){return this.$(".acf-file-uploader.current-language")},$input:function(){return this.$('.acf-file-uploader.current-language input[type="hidden"]')},render:function(t){t=this.validateAttachment(t),this.$control().find("img").attr({src:t.icon,alt:t.alt,title:t.title}),this.$control().find('[data-name="title"]').text(t.title),this.$control().find('[data-name="filename"]').text(t.filename).attr("href",t.url),this.$control().find('[data-name="filesize"]').text(t.filesizeHumanReadable);var e=t.id||"";acf.val(this.$input(),e),e?this.$control().addClass("has-value"):this.$control().removeClass("has-value")}})),acf.registerFieldType(acf.models.ImageField.extend({type:"qtranslate_image",$control:function(){return this.$(".acf-image-uploader.current-language")},$input:function(){return this.$('.acf-image-uploader.current-language input[type="hidden"]')},render:function(t){t=this.validateAttachment(t),this.$control().find("img").attr({src:t.url,alt:t.alt,title:t.title});var e=t.id||"";this.val(e),e?this.$control().addClass("has-value"):this.$control().removeClass("has-value")}})),acf.registerFieldType(acf.models.PostObjectField.extend({type:"qtranslate_post_object",$control:function(){return this.$(".acf-post-object.current-language")},$input:function(){return this.$(".acf-post-object.current-language select")},initialize:function(){var e=this,a=this.$input();if(this.inherit(a),this.get("ui")){var n=this.get("ajax_action");n||(n="acf/fields/"+this.get("type")+"/query"),this.select2=[],this.$(".acf-post-object select").each((function(){var a=acf.newSelect2(t(this),{field:e,ajax:e.get("ajax"),multiple:e.get("multiple"),placeholder:e.get("placeholder"),allowNull:e.get("allow_null"),ajaxAction:n});e.select2.push(a)})),this.$(".acf-post-object span.select2-selection").addClass("qtranxs-translatable")}},onRemove:function(){if(this.select2)for(var t=0;t{var t=jQuery,e=t("body"),a=function(e){var a=t(".multi-language-field");a.find(".current-language").removeClass("current-language"),a.find('[data-language="'+e+'"]').addClass("current-language"),a.find('input[data-language="'+e+'"], textarea[data-language="'+e+'"]')};e.on("click",".qtranxs-lang-switch",(function(){var e=t(this).attr("lang");a(e)})),e.on("click",".wp-switch-editor[data-language]",(function(){var e=t(this).parent(".multi-language-field"),a=t(this).data("language");return e.find(".current-language").removeClass("current-language"),e.find('[data-language="'+a+'"]').addClass("current-language"),e.find('input[data-language="'+a+'"], textarea[data-language="'+a+'"]').focus(),t('.qtranxs-lang-switch[lang="'+a+'"]:first').trigger("click"),!1})),e.on("focusin",".multi-language-field input, .multi-language-field textarea",(function(){t(this).parent(".multi-language-field").addClass("focused")})),e.on("focusout",".multi-language-field input, .multi-language-field textarea",(function(){t(this).parent(".multi-language-field").removeClass("focused")})),e.on("click",".wp-editor-tabs .wp-switch-editor",(function(){var e=t(this).parents(".multi-language-field"),a=t(this).hasClass("switch-tmce")?"tmce":"html";e.find(".wp-editor-tabs .wp-switch-editor.switch-"+a).not(this).each((function(){var e=t(this).attr("data-wp-editor-id");e&&window.switchEditors.go(e,a)}))})),t((function(){if(qTranslateConfig.LSB){var e=qTranslateConfig.js.get_qtx().getActiveLanguage();if(e){a(e);var n=t(".multi-language-field");n.find(".current-language").removeClass("current-language"),n.find('[data-language="'+e+'"]').addClass("current-language")}}}))}},e={};function a(n){var i=e[n];if(void 0!==i)return i.exports;var r=e[n]={exports:{}};return t[n](r,r.exports,a),r.exports}a.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return a.d(e,{a:e}),e},a.d=(t,e)=>{for(var n in e)a.o(e,n)&&!a.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),(()=>{"use strict";a(719),a(174),a(817)})()})(); \ No newline at end of file diff --git a/modules/acf/js/qtranslatex.js b/modules/acf/js/qtranslatex.js index fbef6a2e..a8e4e917 100644 --- a/modules/acf/js/qtranslatex.js +++ b/modules/acf/js/qtranslatex.js @@ -5,11 +5,6 @@ $(window).on('load', function () { qtx.enableLanguageSwitchingButtons('block'); - // Ensure that translation of standard field types is enabled - if (!window.acf_qtranslate_translate_standard_field_types) { - return; - } - const postType = $('#post_type').val(); if (postType === 'acf-field-group') { const isTranslatableSetting = function (element) { @@ -68,16 +63,6 @@ $(window).on('load', function () { return mceInit; }); - // Add display hooks for translatable settings. - const displaySelector = '.acf-label > label, .acf-label > p.description, .acf-input > p.description'; - acf.findFields().each(function () { - $(this).find(displaySelector).each(function () { - if (!qtx.hasContentHook(this)) { - qtx.addDisplayHook(this); - } - }); - }); - // Watch and remove content hooks when fields are removed // however ACF removes the elements from the DOM early so // we must hook into handler and perform updates there diff --git a/modules/acf/src/qtx_module_acf_admin.php b/modules/acf/src/qtx_module_acf_admin.php index 05e343a4..6862c3ae 100644 --- a/modules/acf/src/qtx_module_acf_admin.php +++ b/modules/acf/src/qtx_module_acf_admin.php @@ -9,7 +9,6 @@ class QTX_Module_Acf_Admin { */ public function __construct() { add_action( 'acf/input/admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) ); - add_action( 'admin_footer', array( $this, 'admin_footer' ), -10 ); add_action( 'admin_head', array( $this, 'admin_head' ) ); add_action( 'admin_init', array( $this, 'admin_init' ) ); @@ -30,32 +29,11 @@ public function admin_enqueue_scripts() { 'underscore', 'qtranslate-admin-main' ), QTX_VERSION ); - } - /** - * Output a hidden block that can be used to force qTranslate-X to include the LSB - */ - public function admin_footer() { - ?> - - isset( $current_screen ) ? $current_screen->id : '', + ] ); } /** @@ -77,80 +55,133 @@ public function admin_head() { get_module_setting( 'translate_standard_field_types' ); - if ( $translate_standard_field_types ) { - ?> - - 'page=', - ); - - foreach ( explode( "\n", $this->get_module_setting( 'show_on_pages' ) ) as $page ) { - $page = trim( $page ); - if ( $page ) { - $pages[ $page ] = ''; - } - } - - $config['acf-display-nodes'] = array( - 'pages' => $pages, - 'anchors' => array( - 'acf-qtranslate-lsb-shim' => array( 'where' => 'after' ), - ), - 'forms' => array( - 'wpwrap' => array( - 'fields' => array( - 'lsb-shim' => array( - 'jquery' => '#acf-qtranslate-lsb-shim', - 'encode' => 'display', - ), - 'acf5-field-group-handle' => array( - 'jquery' => '.acf-postbox h2 span,.acf-postbox h3 span', + // Display for posts with ACF fields. + $config['acf-post'] = [ + 'pages' => [ + 'post.php' => '', + 'post-new.php' => '', + ], + 'forms' => [ + 'post' => [ + 'fields' => [ + 'acf-field-group-handle' => [ + 'jquery' => '.acf-postbox h2 span', 'encode' => 'display', - ), - 'acf5-field-label' => array( - 'jquery' => '.acf-field .acf-label label', + ], + 'acf-field-label' => [ + 'jquery' => '.acf-label > label, .acf-label > p.description', 'encode' => 'display', - ), - 'acf5-field-description' => array( - 'jquery' => '.acf-field .acf-label p.description', - 'encode' => 'display', - ), - ) - ), - ), - ); - - $config['acf-field-group'] = array( - 'pages' => array( 'post.php' => '' ), + ], + ] + ] + ] + ]; + + // Display for ACF options: edit ACF field group. + $config['acf-field-group'] = [ + 'pages' => [ 'post.php' => '' ], 'post_type' => 'acf-field-group', - 'forms' => array( - 'post' => array( - 'fields' => array( - 'field-group-object-label' => array( + 'forms' => [ + 'post' => [ + 'fields' => [ + 'acf-field-group-object-label' => [ 'jquery' => '.li-field-label .edit-field', 'encode' => 'display', - ), - ) - ), - ), - ); + ], + ] + ], + ], + ]; + + // Display for ACF options: custom admin options (ACF Pro). + $config['acf-admin'] = [ + 'pages' => [ + 'admin.php' => '', + ], + 'forms' => [ + 'wpbody-content' => [ + 'fields' => [ + 'acf-field-postbox' => [ + 'jquery' => '.acf-postbox .postbox-header h2', // Not captured by main i18n config. + 'encode' => 'display', + ], + 'acf-field-label' => [ + 'jquery' => '.acf-label > label, .acf-label > p.description', + 'encode' => 'display', + ], + ], + ], + ], + ]; + + // Display for generic forms with ACF fields. + $config['acf-forms'] = [ + 'pages' => [ + // TODO: see how to handle this more dynamically with current_screen. + 'user-edit.php' => '', + 'user-new.php' => '', + 'widgets.php' => '', + 'comment.php' => '', + 'nav-menus.php' => '', + ], + 'anchors' => [ + 'acf-form-data' => [ 'where' => 'after' ], + ], + 'forms' => [ + 'wpbody-content' => [ + 'fields' => [ + 'acf-form-data-title' => [ + 'jquery' => '#acf-form-data ~ h2, .acf-postbox h3, .acf-menu-settings h2', + 'encode' => 'display' + ], + 'acf-field-group' => [ + 'jquery' => '.acf-postbox h2 span', + 'encode' => 'display', + ], + 'acf-field-label' => [ + 'jquery' => '.acf-label > label, .acf-label > p.description', + 'encode' => 'display', + ], + ] + ] + ] + ]; + + // Display for taxonomy with ACF fields. + $config['acf-taxonomy'] = [ + 'pages' => [ + 'edit-tags.php' => 'taxonomy=', + 'term.php' => 'taxonomy=', + ], + 'anchors' => [ + 'acf-form-data' => [ 'where' => 'after' ], + 'edittag' => [ 'where' => 'before' ], // To enforce the top LSB (usually wrap). + ], + 'forms' => [ + 'wpbody-content' => [ + 'fields' => [ + 'acf-form-data-title' => [ + 'jquery' => '#acf-form-data ~ h2', + 'encode' => 'display' + ], + 'acf-field-input-description' => [ + 'jquery' => '.acf-label > label, .acf-input > p.description', + 'encode' => 'display', + ], + ] + ] + ] + ]; return $config; } @@ -186,14 +217,6 @@ function admin_init() { 'settings-qtranslate-acf' ); - add_settings_field( - 'translate_standard_field_types', - 'Enable translation for Standard Field Types', - array( $this, 'render_setting_translate_standard_field_types' ), - 'settings-qtranslate-acf', - 'section-acf' - ); - add_settings_field( 'show_language_tabs', 'Display language tabs', @@ -201,14 +224,6 @@ function admin_init() { 'settings-qtranslate-acf', 'section-acf' ); - - add_settings_field( - 'show_on_pages', - 'Display the LSB on the following pages', - array( $this, 'render_setting_show_on_pages' ), - 'settings-qtranslate-acf', - 'section-acf' - ); } function display_settings() { @@ -227,17 +242,6 @@ function update_settings() { update_option( QTX_OPTIONS_MODULE_ACF, $options, false ); } - /** - * Render setting - */ - function render_setting_translate_standard_field_types() { - ?> - get_module_setting( 'translate_standard_field_types' ), 1 ); ?> - value="1"> - -
- Enter each page on it's own line - Date: Wed, 21 Dec 2022 16:29:39 +0100 Subject: [PATCH 2/3] Cleanup current screen tests --- modules/acf/src/qtx_module_acf_admin.php | 9 --------- 1 file changed, 9 deletions(-) diff --git a/modules/acf/src/qtx_module_acf_admin.php b/modules/acf/src/qtx_module_acf_admin.php index 6862c3ae..818f289b 100644 --- a/modules/acf/src/qtx_module_acf_admin.php +++ b/modules/acf/src/qtx_module_acf_admin.php @@ -29,11 +29,6 @@ public function admin_enqueue_scripts() { 'underscore', 'qtranslate-admin-main' ), QTX_VERSION ); - - $current_screen = get_current_screen(); - wp_localize_script( 'qtranslate-acf', 'acf_qtranslate', [ - 'current_screen' => isset( $current_screen ) ? $current_screen->id : '', - ] ); } /** @@ -86,7 +81,6 @@ public function filter_qtranslate_admin_config( $config ) { ] ] ]; - // Display for ACF options: edit ACF field group. $config['acf-field-group'] = [ 'pages' => [ 'post.php' => '' ], @@ -102,7 +96,6 @@ public function filter_qtranslate_admin_config( $config ) { ], ], ]; - // Display for ACF options: custom admin options (ACF Pro). $config['acf-admin'] = [ 'pages' => [ @@ -123,7 +116,6 @@ public function filter_qtranslate_admin_config( $config ) { ], ], ]; - // Display for generic forms with ACF fields. $config['acf-forms'] = [ 'pages' => [ @@ -156,7 +148,6 @@ public function filter_qtranslate_admin_config( $config ) { ] ] ]; - // Display for taxonomy with ACF fields. $config['acf-taxonomy'] = [ 'pages' => [ From 1269405df046023208d0fbafa3e5fb453b9a070f Mon Sep 17 00:00:00 2001 From: HerrVigg Date: Thu, 22 Dec 2022 23:11:05 +0100 Subject: [PATCH 3/3] Fix blocks ACF display and fuse some configs --- modules/acf/src/qtx_module_acf_admin.php | 50 ++++++++---------------- 1 file changed, 16 insertions(+), 34 deletions(-) diff --git a/modules/acf/src/qtx_module_acf_admin.php b/modules/acf/src/qtx_module_acf_admin.php index 818f289b..17976bdd 100644 --- a/modules/acf/src/qtx_module_acf_admin.php +++ b/modules/acf/src/qtx_module_acf_admin.php @@ -67,19 +67,20 @@ public function filter_qtranslate_admin_config( $config ) { 'post-new.php' => '', ], 'forms' => [ - 'post' => [ + // classic LSB (above #post) and blocks SLM (no #post) + 'wpbody-content' => [ 'fields' => [ - 'acf-field-group-handle' => [ - 'jquery' => '.acf-postbox h2 span', + 'acf-field-postbox' => [ + 'jquery' => '.acf-postbox .postbox-header h2', 'encode' => 'display', ], - 'acf-field-label' => [ + 'acf-field-label' => [ 'jquery' => '.acf-label > label, .acf-label > p.description', 'encode' => 'display', ], - ] - ] - ] + ], + ], + ], ]; // Display for ACF options: edit ACF field group. $config['acf-field-group'] = [ @@ -96,35 +97,16 @@ public function filter_qtranslate_admin_config( $config ) { ], ], ]; - // Display for ACF options: custom admin options (ACF Pro). - $config['acf-admin'] = [ - 'pages' => [ - 'admin.php' => '', - ], - 'forms' => [ - 'wpbody-content' => [ - 'fields' => [ - 'acf-field-postbox' => [ - 'jquery' => '.acf-postbox .postbox-header h2', // Not captured by main i18n config. - 'encode' => 'display', - ], - 'acf-field-label' => [ - 'jquery' => '.acf-label > label, .acf-label > p.description', - 'encode' => 'display', - ], - ], - ], - ], - ]; // Display for generic forms with ACF fields. $config['acf-forms'] = [ 'pages' => [ // TODO: see how to handle this more dynamically with current_screen. + 'admin.php' => '', // custom admin options (ACF Pro). + 'comment.php' => '', + 'nav-menus.php' => '', 'user-edit.php' => '', 'user-new.php' => '', 'widgets.php' => '', - 'comment.php' => '', - 'nav-menus.php' => '', ], 'anchors' => [ 'acf-form-data' => [ 'where' => 'after' ], @@ -132,16 +114,16 @@ public function filter_qtranslate_admin_config( $config ) { 'forms' => [ 'wpbody-content' => [ 'fields' => [ - 'acf-form-data-title' => [ + 'acf-form-data-title' => [ 'jquery' => '#acf-form-data ~ h2, .acf-postbox h3, .acf-menu-settings h2', 'encode' => 'display' ], - 'acf-field-group' => [ - 'jquery' => '.acf-postbox h2 span', + 'acf-field-label' => [ + 'jquery' => '.acf-label > label, .acf-label > p.description', 'encode' => 'display', ], - 'acf-field-label' => [ - 'jquery' => '.acf-label > label, .acf-label > p.description', + 'acf-admin-field-title' => [ + 'jquery' => '.acf-postbox .postbox-header h2', // admin.php not set in main i18n. 'encode' => 'display', ], ]