name = 'wysiwyg'; $this->label = __("Wysiwyg Editor",'acf'); $this->category = 'content'; $this->defaults = array( 'tabs' => 'all', 'toolbar' => 'full', 'media_upload' => 1, 'default_value' => '', 'delay' => 0 ); // add acf_the_content filters $this->add_filters(); } /* * add_filters * * This function will add filters to 'acf_the_content' * * @type function * @date 20/09/2016 * @since 5.4.0 * * @param n/a * @return n/a */ function add_filters() { // wp-includes/class-wp-embed.php if( !empty($GLOBALS['wp_embed']) ) { add_filter( 'acf_the_content', array( $GLOBALS['wp_embed'], 'run_shortcode' ), 8 ); add_filter( 'acf_the_content', array( $GLOBALS['wp_embed'], 'autoembed' ), 8 ); } // wp-includes/default-filters.php add_filter( 'acf_the_content', 'capital_P_dangit', 11 ); add_filter( 'acf_the_content', 'wptexturize' ); add_filter( 'acf_the_content', 'convert_smilies', 20 ); // Removed in 4.4 if( acf_version_compare('wp', '<', '4.4') ) { add_filter( 'acf_the_content', 'convert_chars' ); } add_filter( 'acf_the_content', 'wpautop' ); add_filter( 'acf_the_content', 'shortcode_unautop' ); // should only be for the_content (causes double image on attachment page) //add_filter( 'acf_the_content', 'prepend_attachment' ); // Added in 4.4 if( function_exists('wp_make_content_images_responsive') ) { add_filter( 'acf_the_content', 'wp_make_content_images_responsive' ); } add_filter( 'acf_the_content', 'do_shortcode', 11); } /* * get_toolbars * * This function will return an array of toolbars for the WYSIWYG field * * @type function * @date 18/04/2014 * @since 5.0.0 * * @param n/a * @return (array) */ function get_toolbars() { // vars $editor_id = 'acf_content'; // toolbars $toolbars = array(); $mce_buttons = 'formatselect, bold, italic, bullist, numlist, blockquote, alignleft, aligncenter, alignright, link, unlink, wp_more, spellchecker, fullscreen, wp_adv'; $mce_buttons_2 = 'strikethrough, hr, forecolor, pastetext, removeformat, charmap, outdent, indent, undo, redo, wp_help'; $teeny_mce_buttons = 'bold, italic, underline, blockquote, strikethrough, bullist, numlist, alignleft, aligncenter, alignright, undo, redo, link, unlink, fullscreen'; // WP < 3.9 if( acf_version_compare('wp', '<', '3.9') ) { $mce_buttons = 'bold, italic, strikethrough, bullist, numlist, blockquote, justifyleft, justifycenter, justifyright, link, unlink, wp_more, spellchecker, fullscreen, wp_adv'; $mce_buttons_2 = 'formatselect, underline, justifyfull, forecolor, pastetext, pasteword, removeformat, charmap, outdent, indent, undo, redo, wp_help'; $teeny_mce_buttons = 'bold, italic, underline, blockquote, strikethrough, bullist, numlist, justifyleft, justifycenter, justifyright, undo, redo, link, unlink, fullscreen'; // WP < 4.7 } elseif( acf_version_compare('wp', '<', '4.7') ) { $mce_buttons = 'bold, italic, strikethrough, bullist, numlist, blockquote, hr, alignleft, aligncenter, alignright, link, unlink, wp_more, spellchecker, fullscreen, wp_adv'; $mce_buttons_2 = 'formatselect, underline, alignjustify, forecolor, pastetext, removeformat, charmap, outdent, indent, undo, redo, wp_help'; //$teeny_mce_buttons = 'bold, italic, underline, blockquote, strikethrough, bullist, numlist, alignleft, aligncenter, alignright, undo, redo, link, unlink, fullscreen'; } // explode $mce_buttons = explode(', ', $mce_buttons); $mce_buttons_2 = explode(', ', $mce_buttons_2); $teeny_mce_buttons = explode(', ', $teeny_mce_buttons); // Full $toolbars['Full'] = array( 1 => apply_filters('mce_buttons', $mce_buttons, $editor_id), 2 => apply_filters('mce_buttons_2', $mce_buttons_2, $editor_id), 3 => apply_filters('mce_buttons_3', array(), $editor_id), 4 => apply_filters('mce_buttons_4', array(), $editor_id) ); // Basic $toolbars['Basic'] = array( 1 => apply_filters('teeny_mce_buttons', $teeny_mce_buttons, $editor_id) ); // Filter for 3rd party $toolbars = apply_filters( 'acf/fields/wysiwyg/toolbars', $toolbars ); // return return $toolbars; } /* * input_admin_footer * * description * * @type function * @date 6/03/2014 * @since 5.0.0 * * @param $post_id (int) * @return $post_id (int) */ function input_admin_footer() { // vars $json = array(); $toolbars = $this->get_toolbars(); // bail ealry if no toolbars if( empty($toolbars) ) { return; } // loop through toolbars foreach( $toolbars as $label => $rows ) { // vars $label = sanitize_title( $label ); $label = str_replace('-', '_', $label); // append to $json $json[ $label ] = array(); // convert to strings if( !empty($rows) ) { foreach( $rows as $i => $row ) { $json[ $label ][ $i ] = implode(',', $row); } } } ?> =', '4.3') ) { add_filter( 'acf_the_editor_content', 'format_for_editor', 10, 2 ); $button = 'data-wp-editor-id="' . $id . '"'; // WP < 4.3 } else { $function = ($default_editor === 'html') ? 'wp_htmledit_pre' : 'wp_richedit_pre'; add_filter('acf_the_editor_content', $function, 10, 1); $button = 'onclick="switchEditors.switchto(this);"'; } // filter $field['value'] = apply_filters( 'acf_the_editor_content', $field['value'], $default_editor ); // attr $wrap = array( 'id' => 'wp-' . $id . '-wrap', 'class' => 'acf-editor-wrap wp-core-ui wp-editor-wrap ' . $switch_class, 'data-toolbar' => $field['toolbar'] ); // delay if( $field['delay'] ) { $wrap['class'] .= ' delay'; } // vars $textarea = acf_get_textarea_input(array( 'id' => $id, 'class' => 'wp-editor-area', 'name' => $field['name'], 'style' => $height ? "height:{$height}px;" : '', 'value' => '%s' )); ?>