web-dev-qa-db-ja.com

wp_editorを使用していない場合、tinymceが定義されていません

私はjQuery tinyMCEを使用して、動的に生成されたテキスト領域に小さなMCEエディタを追加しています。

JQueryバージョンを呼び出す前にWordPressのwp_editor関数を使用しても問題ありません。そうしないと、手に入ります。

不明なReferenceError:tinymceが定義されていません

恐ろしいハックとして、私は使ったことがある。

wp_editor('hacky', 'hackhack');

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

これはjQuery TinyMCEが動作することを可能にします。これを解消したい。 WPを考えていてもjQueryのバージョンが読み込まれていない(そしてWP-includesのパスを取得するための良い方法がわからない)。

?><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');

しかし、これは問題ではないようです。 WPバージョンは私が必要とする必要なファイルをロードしているようです - 私が必要なファイルがわからないのを除いて。

5
myol

同僚の助けを借りて、class-wp-editor.phpを掘り下げました。

wp_editorが事前に使用されていない場合(これらのスクリプトを呼び出す)、jQuery tinyMCEを初期化するために必要なスクリプトは次のとおりです。

// Get the necessary scripts to launch 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');

これにより、ビジュアル/テキスト間で切り替えるためのタブやメディアアップロード機能のない動的tinyMCEエディタが作成されます。これらのボタンとそれぞれのjQueryを手動で作成する必要がありました。

エディタが使用する必須のCSSで編集された。

編集:

より洗練されたソリューションだがフォールバックが少ない(バージョン管理なし)

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

// wp_enqueue doesn't seem to work at all
echo '<script src="' . $js_src . '" type="text/javascript"></script>';

wp_register_style('tinymce_css', $css_src);
wp_enqueue_style('tinymce_css');
5
myol

それが価値があるもののために - 私は最近サイトが移行した後にエディタがwp 4.1で消えるというこの問題に遭遇しました。たまたま問題は、「アクセシビリティモード」(ウィジェットエディタの画面オプションの下にあるリンク)がオンになっていたことです。

1
dave

私の問題は、user_can_richedit()がfalseを返していたため、wordpressがtinymceスクリプトタグを含んでいなかったことです(私はその理由を調査しませんでした。私のユーザーは管理者です。いずれにせよ、user_can_richedit()の戻り値をフィルタリングして、ワードプレスにTinymceスクリプトを含めることができます。そうすれば、Tinymceが定義されます。

add_filter('user_can_richedit', '__return_true');
0
Luke Chinworth

Wp_editor()を呼び出した後、エラーが発生しました:

j is undefined

使用していたオプション名の名前にドット(my_plugin_name_customer.subscription.updated)が含まれていて、エディターが壊れていたことが判明しました。ドットをアンダースコアに置き換えて、問題を解決しました。

0
dMe