Здравствуйте!
Локалка на WIN10x64, OpenServer, PHP 7.0
Сейчас активировано только одно дополнение - PrimeForum.
Вот что наблюдаю в коде страницы (Кабинет):
<link rel='stylesheet' id='font-awesome-css' href='http://aff.rru/wp-content/plugins/wp-recall/assets/css/font-awesome/css/font-awesome.min.css?ver=4.9.6' type='text/css' media='all' /> <link rel='stylesheet' id='animate-css-css' href='http://aff.rru/wp-content/plugins/wp-recall/assets/css/animate-css/animate.min.css?ver=4.9.6' type='text/css' media='all' /> <link rel='stylesheet' id='rcl-primary-css' href='http://aff.ru/wp-content/plugins/wp-recall/assets/css/style.css?ver=4.9.6' type='text/css' media='all' /> <link rel='stylesheet' id='rcl-users-list-css' href='http://aff.ru/wp-content/plugins/wp-recall/assets/css/users.css?ver=4.9.6' type='text/css' media='all' /> <link rel='stylesheet' id='rcl-register-form-css' href='http://aff.ru/wp-content/plugins/wp-recall/assets/css/regform.css?ver=4.9.6' type='text/css' media='all' /> <link rel='stylesheet' id='cab_15-css' href='http://aff.ru/style.css?ver=4.9.6' type='text/css' media='all' /> <link rel='stylesheet' id='pfm-style-css' href='http://aff.rru/style.css?ver=4.9.6' type='text/css' media='all' /> <link rel='stylesheet' id='ftf-style-css' href='http://aff.ru/style.css?ver=4.9.6' type='text/css' media='all' />
'cab_15-css' - это, как понимаю, стиль темы "theme-sunshine", а ниже стили от PrimeForum.
Со скриптами та же беда. Страница форума:
<script type='text/javascript' src='http://aff.ru/wp-content/plugins/wp-recall/assets/js/core.js?ver=16.15.5'></script> <script type='text/javascript' src='http://aff.ru/wp-content/plugins/wp-recall/assets/js/scripts.js?ver=16.15.5'></script> <script type='text/javascript' src='http://aff.ru/js/scripts.js?ver=16.15.5'></script>
И в админке на странице настроек форума:
<link rel='stylesheet' id='pfm-admin-style-css' href='http://aff.ru/admin/style.css?ver=4.9.6' type='text/css' media='all' /> <script type='text/javascript' src='http://aff.ru/admin/js/scripts.js?ver=4.9.6'></script>
Ну и, соответственно, настройки форума скрыты, видимо из-за того, что скрипты не подгружаются...
Плагин и дополнения активировал-деактивировал по несколько раз уже.
В логе PHP ошибок нет.
И аналогичная картина наблюдается не только с форумом, но и со всеми другими активированными дополнениями!
На сервере этих багов нет, все нормально. Но, для разработки архи-нужна локальная версия.
Здравствуйте.
OpenServer
у таких сборок бывают проблемы с путями. Как победить - не скажу.
У меня на локальном ПК установлен отдельно apache, php, mysql - все работает.
Но интернет завален, как например на denwer (тоже сборка по типу опен сервера) - тоже много проблем с неверным определением путей.
Но я вижу странность:
У вас users.css - грузится с нормальным путём
и regform.css - тоже не выдает 404 - я же верно говорю?
А вот стилевой файл с id id='cab_15-css' выдает неверный путь.
Смотрю в исходник - все они работают через одну функцию rcl_enqueue_style - вот только последний еще принимает аргумент пути rcl_addon_url('style.css', __FILE__) - что наводит на мысль, что у вас проблема с магической константой __FILE__
- дебажьте - что у вас в ней. Я бы начал с этого.
На хостинге таких проблем нету - можно на поддомене завести dev-сервер и работать через хостинг. Я сейчас работаю так - потому что часто переезжаю и нужен доступ к рабочему серверу разработки. Я в htaccess по ip открываю для себя доступ и не имею подобных проблем. Может возьмете на вооружение подобный метод.
Вот сотню лет сидел на Денвере, пару-тройку лет сейчас на OpenServer. Некоторые проблемы иногда были, но решаемые.
Потому, собственно, и пишу, что сам в ступоре - сроду такого не видел 🙂
Но я вижу странность:
У вас users.css - грузится с нормальным путём
и regform.css - тоже не выдает 404 - я же верно говорю?А вот стилевой файл с id id='cab_15-css' выдает неверный путь.
Ну да, я специально в коде показал и те, и те ссылки. Т.е. криво выдаются только пути у ДОПОЛНЕНИЙ и у темы.
...у вас проблема с магической константой __FILE__...
К сожалению, с ней все ок :). Выдает полный путь к файлу, как и дОлжно. Специально посмотрел. Да и представьте, что бы было, если б она косячила, я думаю, даже вордпресс бы не встал нормально, она же используется, практически, везде.
Смотрю в исходник - все они работают через одну функцию rcl_enqueue_style - вот только последний еще принимает аргумент пути rcl_addon_url('style.css', __FILE__)
Да, тоже одним глазом глянул. Нужно будет теперь "открыть оба глаза", а то решил сначала спросить, вдруг уже кто-то "плавал".
Там же еще будет функция разбора пути и преобразования его в URL... Почему-то уверен, что какая-то мелочь мешает. Должно работать. В общем, придется рыть :(.
Спасибо!
Здравствуйте!
Может кому будет интересно, проблему я решил.
Как оказалось, в массиве $active_addons по какой-то причине образовался пустой элемент. Вот так "выглядит" массив при отключенных дополнениях:
Array
(
[] =>
[theme-sunshine] => Array
(
[name] => Sunshine
[version] => 0.1
[support-core] => 15.0.0
[template] => Sunshine
[description] => Шаблон личного кабинета
[author] => Владимир Дружаев, Плечёв Андрей
[author-uri] => https://codeseller.ru
[path] => C:/OpenServer/domains/affru/wp-content/plugins/wp-recall/add-on/theme-sunshine
[priority] => 0
)
)
Из-за этого пустого элемента функция 'rcl_addon_path' (файл wp-recall/functions/addons.php ) отрабатывает неверно.
Деактивация и повторная активация дополнений (и самого плагина) не помогает. Возможно, помогло бы удаление плагина и повторная установка, но это для меня неприемлемо, т.к. (со слов автора плагина) при удалении чистится база, а у меня там уже форум развернут.
Поэтому пришлось вставить пару строк для проверки существования элементов массива. Ну, и еще немножко изменил код проверки на совпадение (функция 'stristr') т.к., на мой взгляд, в источнике это сделано не совсем корректно, хотя и работало.
В общем, было:
$paths = array(); $addonPath = false;
foreach($active_addons as $addonID => $addon){
if($path == $addon['path']){
$addonPath = $addon['path']; break;
}
if($string = stristr($path,trailingslashit($addon['path']))){
$paths[strlen($string)] = $addon['path'];
}
}
Стало:
$paths = array(); $addonPath = false;
foreach($active_addons as $addonID => $addon){
if($addonID) {
if($path == $addon['path']){
$addonPath = $addon['path']; break;
}
if(stristr($path,trailingslashit($addon['path'])) !== FALSE){
$string = stristr($path,trailingslashit($addon['path']));
$paths[strlen($string)] = $addon['path'];
}
}
}
И это все 🙂