Домой WordPress WordPress: Проблемы и решения Не отправляються сообщения со смайлами в чатах "Сообщение не может быть доставлено"
15ответ(ов) в теме
Agnilife
не в сети 5 лет
На сайте с 09.12.2018
Участник
Тем 31
Сообщения 139
1
09:29

Именно на сервере, на сайте не работают смайлы (дефолтные, без плагинов), в чате, ЛС, комментариях и т.д. Т.е. они работают погружаются и добавляются в "текстаэра", но при отправке - ноль. Если это чат или ЛС, выскакивает ошибка "Сообщение не может быть добавлено". Т.е. как будто пустое сообщение. А в комментариях отправляется коммент, без смайла, тоже пустой. Т,е. коммент добавить можно, но он пустой. (если ничего не было кроме смайлов в "текстаэра") Скрипт ВП поддержки смайлов включен и работает. Плагины и дополнения 1000 раз выключали, включали, тестировали. Одинаково по нулям. На ОпенСервере на локалке, все прекрасно работает, в том числе и с плагинами. Подскажите в чем может проблема, хотя бы куда копать? Может из за сервака? Сервр мощный, на линухе, пхп последний, все настроено нормально.

Тоже самое поведение и с установленным дополнением "Smilies in Emoji". Смайлы добавляются, кликабелны, в текстаэра добавляются, но отправка невозможна.

0
Вова (Otshelnik-Fm)
не в сети 7 часов
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
2
09:46

Здравствуйте.

Тему перенес - проблема с вордпресс. Почему?
Потому что вы написали:

Agnilife сказал(а)
Именно на сервере, на сайте не работают смайлы (дефолтные, без плагинов), в чате, ЛС, комментариях

т.е. у вас глобальная проблема.
В чем там дело - можно попытаться разобраться погуглив или в сообществе вордпресс спросить.
Если в самом вордпресс они не работают - то реколл тут не может сделать магию. Разбирайтесь

0
Agnilife
не в сети 5 лет
На сайте с 09.12.2018
Участник
Тем 31
Сообщения 139
3
10:12

Это может быть связано с перекодировками таблиц базы данных?

Редакции сообщения
23.06.2019 10:31Otshelnik-FmПричина: Не стоит цитировать всё
0
Вова (Otshelnik-Fm)
не в сети 7 часов
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
4
10:33

Я не знаю. Вордпресс сам все делал в обновлениях для поддержки эмодзи. Обычно ничего делать дополнительно не нужно

0
garry
не в сети 4 часа
На сайте с 04.01.2014
Участник
Тем 146
Сообщения 2925
5
10:47

Если вы уверены, что ваш шаблон, функции не отключают эмодзи, можно еще тут посмотреть, что с ними
ваш сайт/wp-admin/options.php
Что-то там про них было в настройках, но все очень аккуратно, с бекапом...

0
Agnilife
не в сети 5 лет
На сайте с 09.12.2018
Участник
Тем 31
Сообщения 139
6
11:13

garry сказал(а)
Если вы уверены, что ваш шаблон, функции не отключают эмодзи, можно еще тут посмотреть, что с ними
ваш сайт/wp-admin/options.php
Что-то там про них было в настройках, но все очень аккуратно, с бекапом...

скрипт поддержки смайлов ВП подключен и работает. Я думаю это из-за перекодировки таблиц. Когда заливали сайт на сервак, таблицы базы данных на локальном Опен Сервере, не хотели импортироваться. Они были в utf8mb4_unicode_ci. Пришлось перекодировать таблицы все в utf8_general_ci. И они потом успешно импортировались. Где то тут на форуме была похожая ошибка, помогла перекодировка таблиц и пере активация плагина. Что то вроде в настройках плагина одна кодировка в таблицах другая... Прием в комментарии смайл отправляется как пустой символ. Вот сейчас ищи...

0
garry
не в сети 4 часа
На сайте с 04.01.2014
Участник
Тем 146
Сообщения 2925
7
11:20

Agnilife сказал(а)
скрипт поддержки смайлов ВП подключен и работает

Не понятно, что за скрипт. Вроде в wp ненужны никакие дополнительные скрипты для этого.

0
garry
не в сети 4 часа
На сайте с 04.01.2014
Участник
Тем 146
Сообщения 2925
8
11:28

Еще можете посмотреть в файле wp-config.php, что у вас про базу
Общая кодировка - define('DB_CHARSET', 'utf8');
Например вот так можно указать жестко сравнение. Но и загляните в настройки базы на сервере, что бы убедиться, что именно такое сравнение стоит основным
define('DB_COLLATE', 'utf8_general_ci');
Все это очень внимательно, и имея бекапы.

Редакции сообщения
23.06.2019 11:29garryПричина: не указано
0
Agnilife
не в сети 5 лет
На сайте с 09.12.2018
Участник
Тем 31
Сообщения 139
9
11:33

garry сказал(а)

Agnilife сказал(а)
скрипт поддержки смайлов ВП подключен и работает

Не понятно, что за скрипт. Вроде в wp ненужны никакие дополнительные скрипты для этого.

Для поддержки эмодзи вордперсс постоянно грузит в ХЕАД скрип:
window._wpemojiSettings = {"baseUrl":"https://s.w.org/images/core/emoji/12.0.0-1/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/12.0.0-1/svg/","svgExt":".svg","source":{"concatemoji":"https://agnilife.com/wp-includes/js/wp-emoji-release.min.js?ver=373f2ede5eb25c3c19f5bd9ffbc62a5f"}}; !function(a,b,c){function d(a,b){var c=String.fromCharCode;l.clearRect(0,0,k.width,k.height),l.fillText(c.apply(this,a),0,0);var d=k.toDataURL();l.clearRect(0,0,k.width,k.height),l.fillText(c.apply(this,b),0,0);var e=k.toDataURL();return d===e}function e(a){var b;if(!l||!l.fillText)return!1;switch(l.textBaseline="top",l.font="600 32px Arial",a){case"flag":return!(b=d([55356,56826,55356,56819],[55356,56826,8203,55356,56819]))&&(b=d([55356,57332,56128,56423,56128,56418,56128,56421,56128,56430,56128,56423,56128,56447],[55356,57332,8203,56128,56423,8203,56128,56418,8203,56128,56421,8203,56128,56430,8203,56128,56423,8203,56128,56447]),!b);case"emoji":return b=d([55357,56424,55356,57342,8205,55358,56605,8205,55357,56424,55356,57340],[55357,56424,55356,57342,8203,55358,56605,8203,55357,56424,55356,57340]),!b}return!1}function f(a){var c=b.createElement("script");c.src=a,c.defer=c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var g,h,i,j,k=b.createElement("canvas"),l=k.getContext&&k.getContext("2d");for(j=Array("flag","emoji"),c.supports={everything:!0,everythingExceptFlag:!0},i=0;i<j.length;i++)c.supports[j[i]]=e(j[i]),c.supports.everything=c.supports.everything&&c.supports[j[i]],"flag"!==j[i]&&(c.supports.everythingExceptFlag=c.supports.everythingExceptFlag&&c.supports[j[i]]);c.supports.everythingExceptFlag=c.supports.everythingExceptFlag&&!c.supports.flag,c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.everything||(h=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",h,!1),a.addEventListener("load",h,!1)):(a.attachEvent("onload",h),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),g=c.source||{},g.concatemoji?f(g.concatemoji):g.wpemoji&&g.twemoji&&(f(g.twemoji),f(g.wpemoji)))}(window,document,window._wpemojiSettings);

Он был перенесен в общий файл.джс темы и грузиться от туда. А в функциях темы, чтобы не вгружался в Хеад, он был выключен вот таким кодом:
remove_action( 'wp_head', 'print_emoji_detection_script', 7 ); remove_action( 'wp_print_styles', 'print_emoji_styles' );

Ну там еще и стили эмодзи были пере подключены.

0
garry
не в сети 4 часа
На сайте с 04.01.2014
Участник
Тем 146
Сообщения 2925
10
11:36

Agnilife сказал(а)
Он был перенесен в общий файл.джс темы и грузиться от туда.

Верните все на место и проверьте, возможна масса зависимостей, которую вы нарушили.
Тем более, он наверно не спроста вверху, скорее всего зависимость от jQuery, как вариант.

Редакции сообщения
23.06.2019 11:36garryПричина: не указано
23.06.2019 11:40garryПричина: не указано
1
Agnilife
не в сети 5 лет
На сайте с 09.12.2018
Участник
Тем 31
Сообщения 139
11
11:43

Все "не работало" и когда вордпресс загружал скрипт по умолчанию (вобще непонятно почему вордпресс грузит скрипт поддержки эмодзи в хеад?????). Причем видно как работает скрипт, он делает лишь поддержку смайлов загружая пнг. На загрузку смайлов в сообщения Вп рекала и коментарии он не влияет.

Редакции сообщения
23.06.2019 11:43AgnilifeПричина: не указано
0
garry
не в сети 4 часа
На сайте с 04.01.2014
Участник
Тем 146
Сообщения 2925
12
12:03

Agnilife сказал(а)
вобще непонятно почему вордпресс грузит скрипт поддержки эмодзи в хеад?????

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

Редакции сообщения
23.06.2019 12:04garryПричина: не указано
1
Agnilife
не в сети 5 лет
На сайте с 09.12.2018
Участник
Тем 31
Сообщения 139
13
12:07

garry сказал(а)
Еще можете посмотреть в файле wp-config.php, что у вас про базу
Общая кодировка - define('DB_CHARSET', 'utf8');
Например вот так можно указать жестко сравнение. Но и загляните в настройки базы на сервере, что бы убедиться, что именно такое сравнение стоит основным
define('DB_COLLATE', 'utf8_general_ci');
Все это очень внимательно, и имея бекапы.

Кодировка utf8mb4... Кодировка в базе данных utf8_general_ci. Я так понимаю уже не совпадает и могут быть ошибки.
Должна быть utf8mb4_general_ci, как я понял. В похожей теме Otshelnik-Fm писал, что:

Какая версия вордпресса?
Новые версии вордпресса требуют кодировки utf8mb4_general_ci (чтобы эмодзи работали)
У себя проблему не наблюдаю. Проверяйте таблицы

Вы не можете просматривать опубликованные ссылки

Сейчас перекодирую таблицу

0
Agnilife
не в сети 5 лет
На сайте с 09.12.2018
Участник
Тем 31
Сообщения 139
14
12:36

Да. Все верно! Проблема была в кодировке. Сам написал, сам решил проблему. Короче для людей, кто сталкиваться с такой проблемой. Вордпресс требует кодировки utf8mb4_general_ci (чтобы эмодзи работали). В независимости от того, в каком контексте отправляются смайлы - коментарии, сообщения или чаты Вп-рекалл и т.д.

В общем нужна кодировка utf8mb4_general_ci таблицы которая отвечает за контент сообщения или чата.

Чтобы быстро поменять кодировку в MySQL сервер версии 5.0 и выше, можно выполнить вот такой вот SQL-запрос:

SELECT CONCAT('ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, '` CONVERT TO CHARACTER SET utf8 COLLATE utf8mb4_general_ci;') as sqlcode FROM `information_schema`.`TABLES` t WHERE 1 AND t.`TABLE_SCHEMA` = 'db_name' ORDER BY 1

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

Выполнив этот запрос, мы получим еще один SQL, модифицирующий кодировку таблиц, он будет выглядеть примерно так:

ALTER TABLE `db_name`.`wp_aiowps_events` CONVERT TO CHARACTER SET utf8 COLLATE utf8mb4_general_ci;
ALTER TABLE `db_name`.`wp_aiowps_failed_logins` CONVERT TO CHARACTER SET utf8 COLLATE utf8mb4_general_ci;
ALTER TABLE `db_name`.`wp_aiowps_global_meta` CONVERT TO CHARACTER SET utf8 COLLATE utf8mb4_general_ci;
ALTER TABLE `db_name`.`wp_aiowps_login_activity` CONVERT TO CHARACTER SET utf8 COLLATE utf8mb4_general_ci;
ALTER TABLE `db_name`.`wp_aiowps_login_lockdown` CONVERT TO CHARACTER SET utf8 COLLATE utf8mb4_general_ci;
ALTER TABLE `db_name`.`wp_aiowps_permanent_block` CONVERT TO CHARACTER SET utf8 COLLATE utf8mb4_general_ci;
ALTER TABLE `db_name`.`wp_commentmeta` CONVERT TO CHARACTER SET utf8 COLLATE utf8mb4_general_ci;
ALTER TABLE `db_name`.`wp_comments` CONVERT TO CHARACTER SET utf8 COLLATE utf8mb4_general_ci;
ALTER TABLE `db_name`.`wp_links` CONVERT TO CHARACTER SET utf8 COLLATE utf8mb4_general_ci;
ALTER TABLE `db_name`.`wp_options` CONVERT TO CHARACTER SET utf8 COLLATE utf8mb4_general_ci;
ALTER TABLE `db_name`.`wp_postmeta` CONVERT TO CHARACTER SET utf8 COLLATE utf8mb4_general_ci;

и.т....

теперь можно копировать результирующий скрипт и выполнять его в окошке SQL зпросов. Результатом выполнения данного скрипта будет изменение кодировки во всех таблицах MySQL базы данных.

так можно быстро изменить кодировку нужных талиц
Тему можно закрывать. Проблема решена.

Редакции сообщения
23.06.2019 12:37AgnilifeПричина: не указано
23.06.2019 12:37AgnilifeПричина: не указано
0
Вова (Otshelnik-Fm)
не в сети 7 часов
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
15
12:42

Agnilife сказал(а)
А в функциях темы, чтобы не вгружался в Хеад, он был выключен вот таким кодом

Agnilife сказал(а)
на локальном Опен Сервере, не хотели импортироваться. Они были в utf8mb4_unicode_ci. Пришлось перекодировать таблицы все в utf8_general_ci

- вот вы странный человек. САМИ наломали дров и просите помощи в ваших непонятных действиях.
Никогда не трогайте скрипты, базу данных если не обладаете достаточными знаниями.

Agnilife сказал(а)
вобще непонятно почему вордпресс грузит скрипт поддержки эмодзи в хеад?????

- а вы видать знаете больше разработчиков ядра вордпресс. Ну тогда понятно - можно покинуть мне тему - у меня уровень ниже.

Где-то вами упоминался опенсервер - тут тоже понятно почему на этой сборке изначально не работало. Всегда удивляюсь обычным пользователям что пытаются поднять свой хостинг на пк.

можно выполнить вот такой вот SQL-запрос

- не советую это повторять. В phpmyadmin заходите в настройки таблицы и в селекте выбирайте нужную кодировку и применяйте. Никогда не вписывайте прямые запросы если мало знаний. Все делайте через интерфейс и опции.

Тему можно закрывать. Проблема решена.

закрыто.

1
Тема закрыта. Публикация новых сообщений запрещена.