WordPress Widgets на Windows хостинг платформе у меня не пошёл сразу (Да, как я писал раньше, я тут-же показал это дело и мне сказали инсталлировать). Не пошёл он тем, что не подгружал в себя свою JavaScript часть и CSS. PHP нам не новость, и пошли мы во внутренностях ковыряться. Клиент был скорее жив чем мёртв. Есть в этом плагине такая функция: sidebar_admin_setup, а в ней, на строкер (относительно начала файла) 185 проверка: $page = preg_replace('!^.*/wp-content/[^/]*plugins/!', '', __FILE__);
. Классно, да? В чём класс? А в том, что у Windows слешики то другие – \ и мы нервно ищем спички, что бы их выкурить. Слеши можно поменять, сделав проверку платформы, или просто, быстро и глупо заменим на: $page = preg_replace('!^.*/wp-content/[^/]*plugins/!', '', str_replace ( '\\', '/', __FILE__));
. Ура, казалось всё должно было заработать.
Но не тут то было. Понеслось оно по проводам: Fatal error: Cannot redeclare register_sidebars() (previously declared in *\***\wp-content\plugins\widgets\widgets.php:22) in *\***\wp-content\plugins\widgets\widgets.php on line 22
. Опаньки! А что у нас там? А! Начало плагина – первая функция. Здорово то как! Бамбук ни у кого не завалялся? Курить охота. Перед ней добавим: if (!function_exists ( 'register_sidebars')) {
, в конце файла, перед ?>
, добавим }
и на этом у меня всё заработало. Вот, думаю, может кому поможет?
If you got error like Fatal error: Cannot redeclare register_sidebars() (previously declared in *\***\wp-content\plugins\widgets\widgets.php:22) in *\***\wp-content\plugins\widgets\widgets.php on line 22
when installing WordPress Widgets on Windows hosting, probably, you will see solution of this problem.
Before declaration of this function add this code: if (!function_exists ( 'register_sidebars')) {
, and before end of PHP part of file, after last function declaration, add this code: }
. So, now, on second file include of WordPress Widgets, those function won’t do any troubles any more.
If WordPress Widgets do not loads JavaScript or/and CSS files, please, check the 185 line. Probably you will see there line like: $page = preg_replace('!^.*/wp-content/[^/]*plugins/!', '', __FILE__);
, and on Windows, constant __FILE__ will be with different slashes (like this one: \). Possible, you can solve this problem like me: $page = preg_replace('!^.*/wp-content/[^/]*plugins/!', '', str_replace ( '\\', '/', __FILE__));
.
Мужчина, вы в своём журнале этого не пишете только из-за рекламы Google? :-)
minitoka – нет, если бы мне была нужна такая реклама и способ дохода, сайт был более релевантным и на английском. Блог ведётся для себя – память у нас не бесконечная, а что написано, то не вырубить.