web-dev-qa-db-fra.com

Supprimer des boutons spécifiques de wp_editor ()

Je sais qu'il existe des sujets similaires avec des réponses acceptées mais je ne trouve pas ce que je recherche. Je veux garder uniquement les boutons de base dans wp_editor(). J'utilise ceci dans une page d'options pour rendre l'écriture plus confortable.

Le problème est que le thème ajoute une quantité énorme de quicktags que je ne veux pas sur cette page spécifique. Comment puis-je atteindre cet objectif.

Jusqu'ici, j'ai examiné wp-includes/wp-class-editor.php mais la ligne suivante ne supprime pas les boutons inutiles:

'quicktags' => array('buttons' => 'link,ins,img,close')

:/ Toute aide serait très appréciée.

EDIT: J'ai essayé de modifier la fonction donnée dans un sujet similaire avec ceci:

function wpa_47010( $qtInit ) {
global $my_plugin_page;
    $screen = get_current_screen();
      if( $screen->id == $my_plugin_page ) 
          $qtInit['buttons'] = 'link,img,close';
return $qtInit;
}
add_filter('quicktags_settings', 'wpa_47010');

Mais ça ne marche pas!

1
JMau

Si vous utilisez l'API de configuration, vous pouvez utiliser exactement le même code pour appeler wp_editor que n'importe où ailleurs.

J'ai testé le code ci-dessous, il ajoute une section de réglage à la section de lecture, puis ajoute un champ à la section contenant un éditeur WYSIWYG avec des boutons limités à link, img et close.

// Add a setting to the reading page
 function register_plugin_x_settings() {
    // Add a section to reading settings 
    add_settings_section('plugin_x_setting_section','Plugin X (section caption)','plugin_x_setting_section_callback','reading');

        // add setting field
    add_settings_field('plugin_x_setting_wysiwyg', 'WYSIWYG Content', 'plugin_x_setting_wysiwyg_callback', 'reading', 'plugin_x_setting_section');
    register_setting('reading','plugin_x_setting_wysiwyg');
 }
 add_action('admin_init', 'register_plugin_x_settings');

 // function to render the section
 function plugin_x_setting_section_callback() {
    echo '<p>Plugin X Settings</p>';
 }

// function to render the setting
function plugin_x_setting_wysiwyg_callback() {
    // global editor id (not necesary, but we may need it elsewhere)
    global $myPluginEditorID;
    $myPluginEditorID = "myPluginEditorUniqueID";

    // settings to pass to wp_editor, disables the upload button, and sets minimal quicktags and turns off tinymce
    $settings = array(
        'media_buttons' => false,
        'quicktags'     => array("buttons"=>"link,img,close"),
        'textarea_name' => "input_{$myPluginEditorID}",
        'tinymce'       => false,
    );

    // output the wysiwyg editor
    wp_editor( "Content Here", $myPluginEditorID,$settings);
 }
2
Matt.C

Le code suivant fonctionne pour moi, il ajoute une page d'options, et ajoute une zone WYSIWYG à cette page, avec SEULEMENT 3 balises rapides: link, img et close, et rien d'autre.

Note, j'ai tourné de tinyMCE et passé un tableau de paramètres (qui contient un autre tableau pour les paramètres quicktag) à wp_editor.

En passant l'id unique du champ textarea, cela n'affectera que la case appropriée de la page d'options de votre plugin

// add admin page
function my_admin_add_page() {
    global $my_admin_page;
    $my_admin_page = add_options_page(__('My Admin Page', 'map'), __('My Admin Page', 'map'), 'manage_options', 'map', 'my_admin_page');
}
add_action('admin_menu', 'my_admin_add_page');

// render admin page
function my_admin_page() {
    // global editor id (not necesary, but we may need it elsewhere)
    global $myPluginEditorID;
    $myPluginEditorID = "myPluginEditorUniqueID";

    // settings to pass to wp_editor, disables the upload button, and sets minimal quicktags and turns off tinymce
    $settings = array(
        'media_buttons' => false,
        'quicktags'     => array("buttons"=>"link,img,close"),
        'textarea_name' => "input_{$myPluginEditorID}",
        'tinymce'       => false,
    );

    // output the wysiwyg editor
    wp_editor( "Content Here", $myPluginEditorID,$settings);
}
1
Matt.C