tinymce nu este definit când nu se folosește wp_editor

19 ian. 2015, 17:09:13
Vizualizări: 20.5K
Voturi: 8

Folosesc jQuery tinyMCE pentru a popula zonele de text generate dinamic cu editoare TinyMCE.

Când folosesc funcția WordPress wp_editor înainte să apelez versiunea jQuery, nu am probleme. Dacă nu o folosesc, primesc:

Uncaught ReferenceError: tinymce is not defined

Ca o rezolvare temporară, am folosit:

wp_editor('hacky', 'hackhack');

wp_register_script('admin_js', get_template_directory_uri() . '/assets/js/admin.min.js', array());
wp_enqueue_script('admin_js');

Aceasta permite jQuery TinyMCE să funcționeze. Doresc să elimin această soluție. Gândindu-mă că WP nu încarcă versiunea jQuery (și necunoscând o metodă bună de a obține calea către WP-includes) am folosit:

?><script type="text/javascript"src="//cdnjs.cloudflare.com/ajax/libs/tinymce/4.1.7/jquery.tinymce.min.js"></script><?php

wp_register_script('admin_js', get_template_directory_uri() . '/assets/js/admin.min.js', array());
wp_enqueue_script('admin_js');

Dar se pare că aceasta nu este problema. Se pare că versiunea WP încarcă fișierele necesare - doar că nu știu care sunt aceste fișiere necesare.

0
Toate răspunsurile la întrebare 5
3

Cu ajutorul unui coleg, am analizat codul din class-wp-editor.php

Iată scripturile necesare pentru a inițializa jQuery tinyMCE dacă wp_editor nu a fost folosit anterior (care apelează aceste scripturi).

// Obține scripturile necesare pentru a porni tinymce
$baseurl = includes_url( 'js/tinymce' );
$cssurl = includes_url('css/');

global $tinymce_version, $concatenate_scripts, $compress_scripts;

$version = 'ver=' . $tinymce_version;
$css = $cssurl . 'editor.css';

$compressed = $compress_scripts && $concatenate_scripts && isset($_SERVER['HTTP_ACCEPT_ENCODING'])
    && false !== stripos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip');

if ( $compressed ) {
    echo "<script type='text/javascript' src='{$baseurl}/wp-tinymce.php?c=1&amp;$version'></script>\n";
} else {
    echo "<script type='text/javascript' src='{$baseurl}/tinymce.min.js?$version'></script>\n";
    echo "<script type='text/javascript' src='{$baseurl}/plugins/compat3x/plugin.min.js?$version'></script>\n";
}

add_action( 'wp_print_footer_scripts', array( '_WP_Editors', 'editor_js' ), 50 );
add_action( 'wp_print_footer_scripts', array( '_WP_Editors', 'enqueue_scripts' ), 1 );

wp_register_style('tinymce_css', $css);
wp_enqueue_style('tinymce_css');

Acest cod va crea un editor tinyMCE dinamic fără filele pentru a comuta între modul vizual/text și fără funcționalitatea de încărcare a fișierelor media. A trebuit să creez manual aceste butoane, precum și jQuery-ul corespunzător pentru fiecare.

Am editat și CSS-ul necesar pe care editorul îl folosește.

EDIT:

Soluție mai elegantă, dar cu mai puține mecanisme de rezervă (fără versionare)

$js_src = includes_url('js/tinymce/') . 'tinymce.min.js';
$css_src = includes_url('css/') . 'editor.css';

// wp_enqueue nu pare să funcționeze deloc
echo '<script src="' . $js_src . '" type="text/javascript"></script>';

wp_register_style('tinymce_css', $css_src);
wp_enqueue_style('tinymce_css');
27 ian. 2015 21:50:23
Comentarii

Nimic altceva nu a funcționat până când am găsit și încercat această soluție. Mulțumesc!

stealthyninja stealthyninja
4 aug. 2017 12:47:09

Încearcă să dezactivezi plugin-ul Autoptimize dacă îl folosești.

Mayur Chauhan Mayur Chauhan
3 iul. 2019 03:32:08

Dacă accesezi Dev Tools, în consolă, și cauți eroarea împreună cu numele fișierului asociat, te va ajuta să identifici fișierul problematic. Este posibil să fie un plugin adițional care a fost creat să funcționeze cu o anumită Temă care nu mai este în uz.

KeitelDOG KeitelDOG
14 mai 2021 19:02:26
1

Pentru ceea ce merită - am dat recent peste această problemă cu editorul care dispărea în WordPress 4.1 după o migrare a site-ului. Problema s-a dovedit a fi faptul că modul "accesibilitate" (link-ul din sub Opțiuni ecran în editorul de widget-uri) era activat.

19 feb. 2015 15:33:43
Comentarii

poți să elaborezi?

Volatil3 Volatil3
25 sept. 2018 11:55:46
0

Problema mea a fost că WordPress nu includea tag-ul de script tinymce deoarece user_can_richedit() returna false (nu am investigat de ce. Utilizatorul meu este admin, iar funcționalitatea exista anterior pe o altă instalare, deci probabil există vreun set care controlează acest lucru). În orice caz, poți filtra valoarea returnată de user_can_richedit() pentru a determina WordPress să includă scripturile tinymce, iar apoi tinymce va fi definit.

add_filter('user_can_richedit', '__return_true');
3 oct. 2018 18:47:46
0

Am avut o eroare după ce am apelat wp_editor() care spunea:

j este nedefinit

S-a dovedit că numele opțiunii pe care o foloseam conținea un punct în denumire (my_plugin_name_customer.subscription.updated) și acesta a stricat editorul. Am înlocuit punctul cu underscore și problema a fost rezolvată.

28 aug. 2019 15:15:14
0

Oricine și-a creat utilizatorul de admin din PhpMyAdmin și întâmpină această problemă - este posibil să fie din cauză că nu a copiat rândul user_meta pentru editarea în format rich text. Pur și simplu verificați și debifați opțiunea "Dezactivează editorul vizual la scriere" din profilul utilizatorului pentru a testa dacă aceasta va rezolva problema.

14 sept. 2021 07:30:42