'Snippet Shortcodes: Insert one of your own shortcodes or select a premade shortcode. ', 'button-image' => plugins_url( '../assets/images/snippet-shortcodes.svg', __FILE__ ), 'select-text' => 'Premade Variables', 'dialog-title' => 'Select a shortcode', 'dialog-label' => 'Shortcode', 'values-your' => sh_cd_tinymce_js_varables_shortcodes( 'your' ), 'values-premade' => sh_cd_tinymce_js_varables_shortcodes( 'premade' ) ]; printf( '', json_encode( $config ) ); } /** * Fetch options for shortcode selects * * @param $mode * * @return array */ function sh_cd_tinymce_js_varables_shortcodes( $mode ) { $data = []; if ( 'premade' === $mode ) { $options = sh_cd_presets_both_lists(); $options = array_keys( $options ); } else { $options = sh_cd_db_shortcodes_all_enabled(); $options = wp_list_pluck( $options, 'slug' ); } $formatted = []; foreach ( $options as $option ) { $formatted[] = [ 'value' => sprintf( '[sv slug="%s"]', $option ), 'text' => $option ]; } return $formatted ; } /** * Add JS to TinyMCE plugins * * @param $plugins * * @return mixed */ function sh_cd_tinymce_button_plugin_js( $plugins ) { $plugins[ 'sh_cd_tinymce_button' ] = plugins_url( '../assets/js/tinymce.js', __FILE__ ); return $plugins; } /** * Register TinyMCE button * * @param $buttons * * @return mixed */ function sh_cd_tinymce_button_register( $buttons ) { array_push( $buttons, 'sh_cd_tinymce_button' ); return $buttons; }