Именно на сервере, на сайте не работают смайлы (дефолтные, без плагинов), в чате, ЛС, комментариях и т.д. Т.е. они работают погружаются и добавляются в "текстаэра", но при отправке - ноль. Если это чат или ЛС, выскакивает ошибка "Сообщение не может быть добавлено". Т.е. как будто пустое сообщение. А в комментариях отправляется коммент, без смайла, тоже пустой. Т,е. коммент добавить можно, но он пустой. (если ничего не было кроме смайлов в "текстаэра") Скрипт ВП поддержки смайлов включен и работает. Плагины и дополнения 1000 раз выключали, включали, тестировали. Одинаково по нулям. На ОпенСервере на локалке, все прекрасно работает, в том числе и с плагинами. Подскажите в чем может проблема, хотя бы куда копать? Может из за сервака? Сервр мощный, на линухе, пхп последний, все настроено нормально.
Тоже самое поведение и с установленным дополнением "Smilies in Emoji". Смайлы добавляются, кликабелны, в текстаэра добавляются, но отправка невозможна.
Здравствуйте.
Тему перенес - проблема с вордпресс. Почему?
Потому что вы написали:
Agnilife сказал(а)
Именно на сервере, на сайте не работают смайлы (дефолтные, без плагинов), в чате, ЛС, комментариях
т.е. у вас глобальная проблема.
В чем там дело - можно попытаться разобраться погуглив или в сообществе вордпресс спросить.
Если в самом вордпресс они не работают - то реколл тут не может сделать магию. Разбирайтесь
garry сказал(а)
Если вы уверены, что ваш шаблон, функции не отключают эмодзи, можно еще тут посмотреть, что с ними
ваш сайт/wp-admin/options.php
Что-то там про них было в настройках, но все очень аккуратно, с бекапом...
скрипт поддержки смайлов ВП подключен и работает. Я думаю это из-за перекодировки таблиц. Когда заливали сайт на сервак, таблицы базы данных на локальном Опен Сервере, не хотели импортироваться. Они были в utf8mb4_unicode_ci. Пришлось перекодировать таблицы все в utf8_general_ci. И они потом успешно импортировались. Где то тут на форуме была похожая ошибка, помогла перекодировка таблиц и пере активация плагина. Что то вроде в настройках плагина одна кодировка в таблицах другая... Прием в комментарии смайл отправляется как пустой символ. Вот сейчас ищи...
Еще можете посмотреть в файле wp-config.php, что у вас про базу
Общая кодировка - define('DB_CHARSET', 'utf8');
Например вот так можно указать жестко сравнение. Но и загляните в настройки базы на сервере, что бы убедиться, что именно такое сравнение стоит основным
define('DB_COLLATE', 'utf8_general_ci');
Все это очень внимательно, и имея бекапы.
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' );
Ну там еще и стили эмодзи были пере подключены.
Agnilife сказал(а)
Он был перенесен в общий файл.джс темы и грузиться от туда.
Верните все на место и проверьте, возможна масса зависимостей, которую вы нарушили.
Тем более, он наверно не спроста вверху, скорее всего зависимость от jQuery, как вариант.
Все "не работало" и когда вордпресс загружал скрипт по умолчанию (вобще непонятно почему вордпресс грузит скрипт поддержки эмодзи в хеад?????). Причем видно как работает скрипт, он делает лишь поддержку смайлов загружая пнг. На загрузку смайлов в сообщения Вп рекала и коментарии он не влияет.
Agnilife сказал(а)
вобще непонятно почему вордпресс грузит скрипт поддержки эмодзи в хеад?????
я выше написал возможный вариант...почему
а в остальном, видимо может и база и еще что-то из ваших изменений.
Насчет базы, я выше написал как можно проверить.
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 (чтобы эмодзи работали)
У себя проблему не наблюдаю. Проверяйте таблицыВы не можете просматривать опубликованные ссылки
Сейчас перекодирую таблицу
Да. Все верно! Проблема была в кодировке. Сам написал, сам решил проблему. Короче для людей, кто сталкиваться с такой проблемой. Вордпресс требует кодировки 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 базы данных.
так можно быстро изменить кодировку нужных талиц
Тему можно закрывать. Проблема решена.
Agnilife сказал(а)
А в функциях темы, чтобы не вгружался в Хеад, он был выключен вот таким кодом
Agnilife сказал(а)
на локальном Опен Сервере, не хотели импортироваться. Они были в utf8mb4_unicode_ci. Пришлось перекодировать таблицы все в utf8_general_ci
- вот вы странный человек. САМИ наломали дров и просите помощи в ваших непонятных действиях.
Никогда не трогайте скрипты, базу данных если не обладаете достаточными знаниями.
Agnilife сказал(а)
вобще непонятно почему вордпресс грузит скрипт поддержки эмодзи в хеад?????
- а вы видать знаете больше разработчиков ядра вордпресс. Ну тогда понятно - можно покинуть мне тему - у меня уровень ниже.
Где-то вами упоминался опенсервер - тут тоже понятно почему на этой сборке изначально не работало. Всегда удивляюсь обычным пользователям что пытаются поднять свой хостинг на пк.
можно выполнить вот такой вот SQL-запрос
- не советую это повторять. В phpmyadmin заходите в настройки таблицы и в селекте выбирайте нужную кодировку и применяйте. Никогда не вписывайте прямые запросы если мало знаний. Все делайте через интерфейс и опции.
Тему можно закрывать. Проблема решена.
закрыто.