web-dev-qa-db-fra.com

Wordpress 3.2 a cassé mon code TinyMCE

Mon code fonctionnait jusqu'à la mise à jour 3.2, où j'ai remarqué que tinyMCE avait également été mis à jour.

Quelqu'un a-t-il des idées pour lesquelles cela pourrait ne pas fonctionner maintenant? Je ne reçois aucune erreur de console mais je ne reçois pas d'éditeurs tinyMCE sur la page non plus!

CLARIFICATION: chaque instance de l'éditeur TinyMCE a disparu!

AUTRE CLARIFICATION: cela ne se produit que sur les pages de type publication personnalisées sur lesquelles j'ai des instances personnalisées de l'éditeur TinyMCE. J'ai toujours le MCE "theEditor" par défaut dans la zone Posts par défaut.

function meta_genus_species() {
    global $post;

    $genus = get_post_custom_values( 'genus', $post->ID );
    $species = get_post_custom_values( 'species', $post->ID );
    $etymology = get_post_custom_values( 'etymology', $post->ID );
    $family = get_post_custom_values( 'family', $post->ID );
    $common_names = get_post_custom_values( 'common_names', $post->ID );

    if (!isset($id)) { $id = "etymology"; }
    if (!isset($temp_min)) { $temp_min = plugins_url('images/temp_max.png' , __FILE__); }
    if (!isset($temp_max)) { $temp_max = plugins_url('images/temp_min.png' , __FILE__); }
    if (!isset($pH_min)) { $pH_min = plugins_url('images/pH_max.png' , __FILE__); }
    if (!isset($pH_max)) { $pH_max = plugins_url('images/pH_max.png' , __FILE__); }

$tinyMCE = <<<EOT
    <script type="text/javascript">
        jQuery(document).ready(function($) {
            $("#{$id}").addClass("mceEditor");
            if ( typeof( tinyMCE ) == "object" &&
                 typeof( tinyMCE.execCommand ) == "function" ) {
              tinyMCE.settings = {
                theme : "advanced",
                mode : "none",
                language : "en",
                height:"75",
                width:"100%",
                theme_advanced_layout_manager : "SimpleLayout",
                theme_advanced_toolbar_location : "top",
                theme_advanced_toolbar_align : "left",
                theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,temp_min,temp_max,pH_min,pH_max",
                theme_advanced_buttons2 : "",
                theme_advanced_buttons3 : "",
                setup : function(ed) {
                    ed.addButton('temp_min', {
                        title : 'Temperature: Minimum',
                        image : '{$temp_min}',
                        onclick : function() {
                            ed.focus();
                            ed.selection.setContent('[temp_min]');
                        }
                    }),
                    ed.addShortcut("ctrl+1", "temp_min", "temp_min"),
                    ed.addButton('temp_max', {
                        title : 'Temperature: Maximum',
                        image : '{$temp_max}',
                        onclick : function() {
                            ed.focus();
                            ed.selection.setContent('[temp_max]');
                        }
                    }),
                    ed.addButton('pH_min', {
                        title : 'pH: Minimum',
                        image : '{$pH_min}',
                        onclick : function() {
                            ed.focus();
                            ed.selection.setContent('[pH_min]');
                        }
                    }),
                    ed.addButton('pH_max', {
                        title : 'pH: Maximum',
                        image : '{$pH_max}',
                        onclick : function() {
                            ed.focus();
                            ed.selection.setContent('[pH_max]');
                        }
                    });
                }
              };
              tinyMCE.execCommand("mceAddControl", true, "{$id}");
            }
        });
    </script>
EOT;
    echo $tinyMCE;

    ?>
<div class="meta_control normal">
    <p>Description of taxonomy.</p>
    <div class="box">
        <label>Genus</label>
        <p>
            <input name="genus" class="text" value="<?php if(isset($genus[0])) { echo esc_attr( $genus[0] ); } ?>" />
            <span>Testing...</span>
        </p>
    </div>
    <div class="box">
        <label>Species</label>
        <p>
            <input name="species" class="text"  value="<?php if(isset($species[0])) { echo esc_attr( $species[0] ); } ?>" />
            <span>Testing...</span>
        </p>
    </div>
    <p>
        <label>Etymology</label>
        <textarea cols="50" rows="5" name="etymology" id="etymology"><?php if(isset($etymology[0])) { echo esc_attr( $etymology[0] ); } ?></textarea>
        <span>Description</span>
    </p>
    <p>
        <label>Family</label>
        <input name="family" class="text"  value="<?php if(isset($family[0])) { echo esc_attr( $family[0] ); } ?>" />
        <span>Description</span>
    </p>
    <p>
        <label>Common Names</label>
        <input name="common_names" class="text"  value="<?php if(isset($common_names[0])) { echo esc_attr( $common_names[0] ); } ?>" />
        <span>Description</span>
    </p>
</div>
    <?php

}

function meta_authored() {
    global $post;

    $species_author = get_post_custom_values( 'species_author', $post->ID );
    $year_described = get_post_custom_values( 'year_described', $post->ID );

    ?>
<div class="meta_control side">
    <label>Species Author</label>
    <p>
        <input name="species_author" class="text" value="<?php if(isset($species_author[0])) { echo esc_attr( $species_author[0] ); } ?>" />
    </p>
    <label>Year Described</label>
    <p>
        <input name="year_described" class="text" value="<?php if(isset($year_described[0])) { echo esc_attr( $year_described[0] ); } ?>" />
    </p>
</div>
    <?php
}
5
dunc

J'ai trouvé quelques informations sur les modifications de la version 3.2 qui pourraient être pertinentes:

Apparemment, wp_tiny_mce_preload_dialogs() n'existe plus à partir de WP3.2. Il a été remplacé par wp_preload_dialogs() qui est maintenant appelé à partir de wp_quicktags(). wp_quicktags, à son tour, est appelé à partir de la fonction the_editor(). Ainsi, si vous utilisez the_editor(), vous n'avez plus besoin d'appeler manuellement la fonction pour précharger les boîtes de dialogue!

Si vous n'utilisez pas the_editor(), veillez à appeler wp_preload_dialogs() quelque part à partir de votre pied de page de la manière suivante:

wp_preload_dialogs( array( 'plugins' => 'wpdialogs,wplink,wpfullscreen' ) );

Vous pouvez essayer d'appeler wp_preload_dialogs (), ou peut-être utiliser the_editor() au lieu de tinyMCE.execCommand().

Aussi, consultez cette question ; appeler wp_tiny_mce() a résolu mon problème.


Update : wp_tiny_mce () pourrait être obsolète dans 3.3 .

2
Ian Dunn

La possibilité que votre code personnalisé TinyMCE vous casse le thème est jolie, mais s'il vous plaît - avant essayer de le modifier ou de le déboguer - désactivez d'abord vos plugins et - si cela ne vous aide pas - basculez vers le thème par défaut et voyez s'il est travaux.

Regardez ensuite votre fonction meta_genus_species() et commencez à commenter les blocs de code ed.addButton. Voir si cela fonctionne. Si c'est le cas, décommentez un, vérifiez le résultat, décommentez le suivant, etc.

2
kaiser

Il y a un problème avec WP 3.2 et l'éditeur visuel.

Essaye ça:

Quoi qu'il en soit, pour nous, notre solution consistait à ouvrir wp-admin/admin-footer.php et à commenter la ligne 36.

do_action('admin_footer', '');

Lisez ceci: http://documentation.diyartportfolios.com/visual-editor-not-workin

et ceci: http://wordpress.org/support/topic/upgraded-to-32-visual-editor-buttons-missing

0
danielwiener