jQuery( document ).ready( function( $ ) { $( '#update-nav-menu' ).bind( 'click', function( e ) { if ( e.target && e.target.className && -1 != e.target.className.indexOf( 'item-edit' ) ) { $( "input[value='#pll_switcher'][type=text]" ).parent().parent().parent().each( function(){ var item = $( this ).attr( 'id' ).substring( 19 ); $( this ).children( 'p:not( .field-move )' ).remove(); // remove default fields we don't need // item is a number part of id of parent menu item built by WordPress // pll_data is built server side with i18n strings without HTML and data retrieved from post meta // the usage of attr method is safe before append call. h = $( '' ).attr( { type: 'hidden', id: 'edit-menu-item-title-' + item, name: 'menu-item-title[' + item + ']', value: pll_data.title } ); $( this ).append( h ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.append h = $( '' ).attr( { type: 'hidden', id: 'edit-menu-item-url-' + item, name: 'menu-item-url[' + item + ']', value: '#pll_switcher' } ); $( this ).append( h ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.append // a hidden field which exits only if our jQuery code has been executed h = $( '' ).attr( { type: 'hidden', id: 'edit-menu-item-pll-detect-' + item, name: 'menu-item-pll-detect[' + item + ']', value: 1 } ); $( this ).append( h ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.append ids = Array( 'hide_if_no_translation', 'hide_current', 'force_home', 'show_flags', 'show_names', 'dropdown' ); // reverse order // add the fields for ( var i = 0, idsLength = ids.length; i < idsLength; i++ ) { p = $( '
' ).attr( 'class', 'description' ); $( this ).prepend( p ); // item is a number part of id of parent menu item built by WordPress // pll_data is built server side with i18n strings without HTML label = $( '