web-dev-qa-db-fra.com

Le bouton d'ancrage TinyMCE ne s'affiche pas

J'utilise ce filtre et cette fonction pour afficher une version personnalisée et simplifiée de l'éditeur TinyMCE. Tout fonctionne comme il se doit ... sauf que le bouton "Ancre" ne s'affiche pas ("Ancre")? Selon le site Web TinyMCE ( http://www.tinymce.com/wiki.php/Controls ), il s’agit du contrôle à utiliser.

Quelqu'un sait-il pourquoi le bouton d'ancrage ne s'affichera pas?

enter image description here

EDIT: l’exemple de code vient d’ici (cela montre le code complet que j’utilise, pas seulement l’extrait ci-dessous): https://Gist.github.com/mrwweb/9937127

add_filter( 'mce_buttons', 'wpse_mce_buttons_1' );
function wpse_mce_buttons_1( $buttons ) {
    $buttons = array( 'styleselect', 'bold', 'italic', 'link', 'unlink', 'bullist', 'numlist', 'table', 'anchor');

    return $buttons;
}
add_filter( 'mce_buttons_2', 'wpse_mce_buttons_2' );
function wpse_mce_buttons_2( $buttons ) {
    $buttons = array();
    return $buttons;
}
3
codeview

J'ai eu exactement le même problème et j'ai trouvé la solution.

Le problème est que le plugin d'ancrage pour TinyMCE n'est pas inclus dans l'installation par défaut de Wordpress. Donc, alors que Wordpress dit d'inclure:

$buttons[] = 'anchor';

… Ça ne marchera pas car le plugin TinyMCE pour les ancres n'est pas là.

Si vous allez sur le site Web de TinyMCE , vous pouvez télécharger le package complet directement. Une fois que vous l'avez, vous voudrez déplacer/js/tinymce/plugins/anchor/dans votre installation Wordpress à/wp-includes/js/tinymce/plugins /.

En gros, vous voulez avoir/wp-includes/js/tinymce/plugins/anchor/dans votre installation.

Une fois que cela est disponible, vous devez ajouter une fonction qui indique à TinyMCE de rechercher ce plugin (soit dans le functions.php de votre thème, soit ajouté à un plugin):

function my_mce_external_plugins($plugins) {

    $plugins['anchor'] = '/wp-includes/js/tinymce/plugins/anchor/plugin.min.js';
    return $plugins;
}
add_filter('mce_external_plugins', 'my_mce_external_plugins');

Et maintenant, le bouton sera ajouté à l'éditeur visuel:

function extra_editor_buttons($buttons) {
    $buttons[] = 'anchor';
    $buttons[] = 'superscript';
    $buttons[] = 'subscript';
    return $buttons;
}
add_filter("mce_buttons_2", "extra_editor_buttons");

Et voilà:

Wordpress Visual Editor, Now With Anchor Button

Cette solution a été inspirée par cette question connexe qui concernait le bouton de code dans TinyMCE, mais avait exactement la même solution (le plug-in manquait). Les plugins d'ancrage et de code sont manquants et il y a un bogue ouvert pour ajouter les fichiers, alors peut-être que ce ne sera pas un problème dans les versions futures.

J'espère que cela peut aider quelqu'un d'autre aussi!

7
Ben Dyer

Votre premier filtre n'est pas correct. 'styleselect' vous donne et génère un menu déroulant sur le tinyMCE. Vous ne pouvez pas ajouter d'informations comme ça.

Voici ce qu'il faut faire.

Belle façon:

Commencez par créer un fichier séparé appelé 'custom_wp_admin_editor_tinymce.php' (ou quoi que ce soit). Dans le fichier function.php, incluez votre fichier avec le chemin correct dans lequel vous avez créé votre fonction précédente.

// Add the heading dropdown (x6) and add the format dropdown
include_once(TEMPLATEPATH.'/Path to you doc/custom_wp_admin_editor_tinymce.php');

Voici votre modèle 'custom_wp_admin_editor_tinymce'.

<?php
// Add the heading dropdown (x6) and add the format dropdown
function enable_style_dropdown($buttons) {
    $buttons[] = 'styleselect';
    return $buttons;
}
add_filter("mce_buttons_2", "enable_style_dropdown");


function myformatTinyMCE( $in ) {
    $in['block_formats'] = 'Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6';
    $style_formats = array (
        array( 'title' => 'bold', 'block' => 'p', 'classes' => 'bold' ),
        array( 'title' => 'italic', 'block' => 'p', 'classes' => 'italic' ),    
        array( 'title' => 'link', 'block' => 'p', 'classes' => 'link' ),
        array( 'title' => 'unlink', 'block' => 'p', 'classes' => 'unlink' ),
        array( 'title' => 'bullist', 'block' => 'p', 'classes' => 'bullist' ),
        array( 'title' => 'numlist', 'block' => 'p', 'classes' => 'numlist' ),
        array( 'title' => 'table', 'block' => 'p', 'classes' => 'table' ),
        array( 'title' => 'anchor', 'block' => 'p', 'classes' => 'anchor' )
    );
    $in['style_formats'] = json_encode( $style_formats );
    $in['style_formats_merge'] = false;
    $in['wordpress_adv_hidden'] = false;
    return $in;
}
add_filter( 'tiny_mce_before_init', 'myformatTinyMCE' );
?>

Manière sale:

Passé le code précédent directement dans function.php

0
Romain