Intereting Posts
Как включить файл только на странице виджетов на панели управления? Всегда показывать заголовок в виджетах wordpress Содержание не найдено на странице 2 страницы с 1 сообщение на страницу Как получить все предопределенные вызовы do_action () из активной темы Построение платного скачивания музыкального сайта с wordpress Отправить сообщения электронной почты после отправки комментария Добавить действие «page_template» не работает с домашней страницей 404 после перемещения localhost wp на сервер Фильтровать сообщения по авторам и категориям одновременно home.php или frontpage (через настройки) для темы? Панель администратора: нажатие на следующую запись возвращает ERR_NAME_NOT_RESOLVED Почему save_post _ $ (custom_post_type) уволен, даже если я еще не сохраняю сообщение? Исключить категорию путём в pre_get_posts? Триггер WordPress от электронной почты? Ajax mousedown вызывает получение «отмененного» при нажатии ссылки

Количество слов, использующих tinymce в интерфейсе

Я использую фронт встроенный (плагин каталога статьи) tinymce с wp_editor.
что когда-либо я пытался, я не могу заставить счетчик слов работать автоматически.

я могу подсчитать слова на вкладке HTML с помощью счетчика jquery word, но не
на вкладке wysisyg с момента iframe …

я получил несколько новых белых волос, занимающихся этой проблемой, и буду очень благодарен
ваш ввод / помощь или даже ссылка gr8 на решение.

Вот код, который у меня есть (соответствующая часть страницы), включая
счетчик jquery, который я бы предпочел не использовать, и предпочел бы использовать wordpress
или, точнее, tinymce строить в плагине / способность подсчитывать слова, как если бы внутри приборной панели.

<script type="text/javascript"> $(document).ready(function() { $("[class^='count[']").each(function() { var elClass = $(this).attr('class'); var minwords = 0; var maxWords = 0; var countControl = elClass.substring((elClass.indexOf('['))+1, elClass.lastIndexOf(']')).split(','); if(countControl.length > 1) { minwords = countControl[0]; maxWords = countControl[1]; } else { maxWords = countControl[0]; } $(this).after('<div class="wordcount"><strong>0</strong> Words</div>'); if(minwords > 0) { $(this).siblings('.wordcount').addClass('errorwords'); } $(this).bind('keyup click blur focus change paste', function() { var numWords = jQuery.trim($(this).val()).split(' ').length; if($(this).val() === '') { numWords = 0; } $(this).siblings('.wordcount').children('strong').text(numWords); if(numWords < minwords || (numWords > maxWords && maxWords != 0)) { $(this).siblings('.wordcount').addClass('errorwords'); } else { $(this).siblings('.wordcount').removeClass('errorwords'); } }); }); }); </script> <?php wp_print_scripts('quicktags'); require_once(ABSPATH . '/wp-admin/includes/post.php'); function richedit() { return true; } add_filter('user_can_richedit', 'richedit'); //wp_tiny_mce( false, array( 'height' => '370' ) ); if ($options['default_editor'] == 'html') { add_filter( 'wp_default_editor', create_function('', 'return "html";') ); } else { add_filter( 'wp_default_editor', create_function('', 'return "tinymce";') ); } wp_editor($_POST['post'], 'minword' , array('textarea_name' => 'minword', 'editor_class' => 'count[50,0]')); } else { echo '<style type="text/css">#quicktags {display:none}</style>'; wp_editor($_POST['post'], 'minword' , array('textarea_name' => 'minword', 'editor_class' => 'count[50,0]')); } ?> 

,

ПЕРЕСМОТРЕНЫ, ЧТОБЫ ЛУЧШЕ ОБЪЯСНИТЬ @Bueltge И ДРУГИЕ МОИ ПРОБЛЕМЫ …
Я загрузил временную версию онлайн, чтобы показать вам проблему.

Веб-сайт находится на иврите, поэтому вам нужно войти в систему
с демо-пользовательской / пропускной комбинацией, которая: temp / temp

URL: ЗДЕСЬ

Затем нажмите последнюю кнопку, обозначающую первый слева …
там вы увидите редактора. попытка написать это будет результат
при этом счетчик символов не меняется, но если вы нажмете на вкладку HTML, вы
увидит, что работает счетчик символов.

Итак … Как я могу подсчитать счетчик в режиме wysisyg?

в этом примере используется подсказка кода, в которой небольшое изменение
к id – вот пересмотренные две верхние строки, которые я изменил

 var comment_input = $( '#articleSubmit textarea' ); var submit_button = $( '#articleSubmit #submit' ); 

Solutions Collecting From Web of "Количество слов, использующих tinymce в интерфейсе"

Спустя некоторое время я решил попробовать еще раз … (это нужно для проекта)
на этот раз я пошел на чистый jquery, и я получил его на работу!

вот:
рабочий и простой в использовании способ подсчета слов, когда они записываются внутри wp_editor как в
html-редактор и визуальный редактор.

 <script type="text/javascript"> i=0; $(document).ready(function(){ // visual mode // the iframe id $("#description_ifr").ready(function () { setInterval(function(){ var tinymceval = $('#description_ifr').contents().find('body').text(); var wordscount = tinymceval.split(" "); // you should crete a div with the // the id = #wordcount to show count $("#wordcount").text(wordscount.length); }, 5000) }); // html mode // #description is the id of the text area $("#description").keypress(function(){ $("#wordcount").text(i+=1); }); }); </script> 

Спасибо за помощь eveyone;)

Должен сделать это как ответ из-за ограничения на лимит комментариев (ирония :)):

вы можете попробовать, вместо того, чтобы выбирать textarea классом или тем, использовать объект tinymce для получения содержимого. в вашем случае это tinyMCE.editors.minword.getContent. Это вернет длину содержимого. Не обязательно, но не имеет значения, находится ли он в визуальном или html-режиме … но даже если это имеет значение, нацелиться на использование визуального режима (повторяя себя) tinymce.editors.minword .getContent. чтобы проверить, в каком режиме редактор вы можете использовать что-то вроде:

 // get the container container = $('.wp-editor-wrap'); // check for current state if ( $(container) ).hasClass('html-active') ) { ..html mode stuff.. } else { visual mode stuff } 

где материал html mode / visual mode просто означает переключить селектор для вашей функции keyup.

EDIT: Чтобы подтвердить, что .getContent не заботится о текущем состоянии, см. Также этот поток: как получить вход редактора TinyMCE при использовании в интерфейсе?

Так. Просто используйте tinyMCE.editors. ## editor_id ##. GetContent, чтобы использовать длину используемого редактора.

РЕДАКТИРОВАТЬ:

Без тестирования не гарантируйте, что нет ошибки

 <script type="text/javascript"> $(document).ready(function() { $("[class^='count[']").each(function() { var elClass = $(this).attr('class'); // new line, editor id var elId = $(this).attr('id'); var minwords = 0; var maxWords = 0; var countControl = elClass.substring((elClass.indexOf('['))+1, elClass.lastIndexOf(']')).split(','); if(countControl.length > 1) { minwords = countControl[0]; maxWords = countControl[1]; } else { maxWords = countControl[0]; } $(this).after('<div class="wordcount"><strong>0</strong> Words</div>'); if(minwords > 0) { $(this).siblings('.wordcount').addClass('errorwords'); } $(this).bind('keyup click blur focus change paste', function() { // new line, reference element ID var content = get_tinymce_content(elId); // changed line var numWords = jQuery.trim(content).split(' ').length; if($(this).val() === '') { numWords = 0; } $(this).siblings('.wordcount').children('strong').text(numWords); if(numWords < minwords || (numWords > maxWords && maxWords != 0)) { $(this).siblings('.wordcount').addClass('errorwords'); } else { $(this).siblings('.wordcount').removeClass('errorwords'); } }); }); }); function get_tinymce_content(elId){ if (jQuery("#"+elId+"-wrap").hasClass("tmce-active")){ return tinyMCE.editors.elId.getContent(); }else{ return jQuery('#'+elId).val(); } } </script> 

В этом ответе вы найдете мое решение для счетчика слов для комментариев; но вы также можете использовать это для другого идентификатора для подсчета слов в редакторе frontend.