wp_editor( string $content, string $editor_id, array $settings = array() )

Renders an editor.

Description

Using this function is the proper way to output all needed components for both TinyMCE and Quicktags.
_WP_Editors should not be used directly. See https://core.trac.wordpress.org/ticket/17144.

NOTE: Once initialized the TinyMCE editor cannot be safely moved in the DOM. For that reason running wp_editor() inside of a meta box is not a good idea unless only Quicktags is used.
On the post edit screen several actions can be used to include additional editors containing TinyMCE: ‘edit_page_form’, ‘edit_form_advanced’ and ‘dbx_post_sidebar’.
See https://core.trac.wordpress.org/ticket/19173 for more information.

See also

Parameters

$contentstringrequired
Initial content for the editor.
$editor_idstringrequired
HTML ID attribute value for the textarea and TinyMCE.
Should not contain square brackets.
$settingsarrayoptional
See _WP_Editors::parse_settings() for description.

Default:array()

Source

function wp_editor( $content, $editor_id, $settings = array() ) {
	if ( ! class_exists( '_WP_Editors', false ) ) {
		require ABSPATH . WPINC . '/class-wp-editor.php';
	}
	_WP_Editors::editor( $content, $editor_id, $settings );
}

Changelog

VersionDescription
3.3.0Introduced.

User Contributed Notes

  1. Skip to note 8 content

    Get the wp_editor through AJAX Call,

    add_action( 'wp_ajax_bc_ajax_request', 'bc_ajax_request_fn' ); 
    function bc_ajax_request_fn(){
    $html ='';
    $html .= bc_get_wp_editor('Test Message','primary_editor',array());
    return $html;
    }
    function bc_get_wp_editor( $content = '', $editor_id, $options = array() ) {
    	ob_start();
    
    	wp_editor( $content, $editor_id, $options );
    
    	$temp = ob_get_clean();
    	$temp .= \_WP_Editors::enqueue_scripts();
    	$temp .= print_footer_scripts();
    	$temp .= \_WP_Editors::editor_js();
    
    	return $temp;
    }
  2. Skip to note 9 content

    To edit tinymce Visual Buttons, you should use toolbar instead of TinyMCE documentation’s theme_advanced_buttons attribute:

    $args = array(
        'tinymce'       => array(
            'toolbar1'      => 'bold,italic,underline,separator,alignleft,aligncenter,alignright,separator,link,unlink,undo,redo',
            'toolbar2'      => '',
            'toolbar3'      => '',
        ),
    );
    wp_editor( $content, $editor_id, $args );
  3. Skip to note 11 content

    Modify the editor’s default settings when initializing it
    You can pass an array of one or more settings to modify for this editor instance, such as hiding the insert media buttons.

    $content   = '';
    $editor_id = 'mycustomeditor';
    $settings  = array( 'media_buttons' => false );
    
    wp_editor( $content, $editor_id, $settings );
  4. Skip to note 14 content

    Remove HTML button and media button in editor. Create blank content. Define a custom name and id for the editor. Determine your editor’s row count.

    $content = "";
    $custom_editor_id = "editorid";
    $custom_editor_name = "editorname";
    $args = array(
    		'media_buttons' => false, // This setting removes the media button.
    		'textarea_name' => $custom_editor_name, // Set custom name.
    		'textarea_rows' => get_option('default_post_edit_rows', 10), //Determine the number of rows.
    		'quicktags' => false, // Remove view as HTML button.
    	);
    wp_editor( $content, $custom_editor_id, $args );

You must log in before being able to contribute a note or feedback.