%PDF- %PDF-
Direktori : /proc/self/root/home/infra/betheme/betheme/functions/builder/assets/ |
Current File : //proc/self/root/home/infra/betheme/betheme/functions/builder/assets/rank-math-integration.js |
/** * RankMath custom fields integration class */ class RankMathCustomFields { /** * Class constructor */ constructor() { this.init() this.hooks() this.events() const that = this; jQuery(document).on('mfn:builder:item:add mfn:builder:item:clone mfn:builder:element:delete', function( $this, item ){ that.init() that.events() rankMathEditor.refresh( 'content' ) }); } /** * Init the custom fields */ init() { this.fields = this.getFields() this.getContent = this.getContent.bind( this ) } /** * Hook into Rank Math App eco-system */ hooks() { wp.hooks.addFilter( 'rank_math_content', 'rank-math', this.getContent, 11 ) } /** * Capture events from custom fields to refresh Rank Math analysis */ events() { jQuery( this.fields ).each( function( key, value ) { jQuery( value ).on( 'keyup change', _.debounce( function() { rankMathEditor.refresh( 'content' ) }, 500 ) ) } ) } /** * Get custom fields ids. * * @return {Array} Array of fields. */ getFields() { const fields = [] const $builder = jQuery('#mfn-builder'); if( $builder.length ){ jQuery( '.mfn-form-control.preview-title, .mfn-form-control.preview-subtitle, .mfn-form-control.preview-content, .mfn-form-control.preview-image', $builder ).each( function() { fields.push( jQuery(this) ) } ); } else { if( jQuery( '#mfn-rankmath-content' ).val() ){ fields.push( jQuery( '#mfn-rankmath-content' ) ); } } return fields } /** * Gather custom fields data for analysis * * @param {string} content Content to replce fields in. * * @return {string} Replaced content. */ getContent = function( content ) { // this.fields = this.getFields() jQuery( this.fields ).each( function( key, el ) { if( ! el ){ return true; } var $el = jQuery(el); if( ! $el.val() ){ return; } if( $el.is('.preview-image') ){ // image content += ' <img src="'+ $el.val() + '" alt="" />' ; } else if( $el.is('.rm-heading') ){ // heading var tag = $el.closest('.modalbox-card').find('input[name$="header_tag]"]:checked').val(); if( tag ){ content += ' <'+tag+'>'+ $el.val() + '</'+tag+'>' ; } } else { // default content += ' '+ $el.val(); } }); console.log(content); return content; } } jQuery( function() { setTimeout( function() { new RankMathCustomFields() }, 500 ) } )