Ошибка при подключении файла в дочерней теме wordpress

164
20 февраля 2022, 14:30

Такая проблема: имеется дочерняя тема Sirat, подключил отредактированный файл по пути /inc/social-widgets/social-icon.php

Подключал так: require_once get_stylesheet_directory(). '/inc/social-widgets/social-icon.php';

После чего получаю ошибку:

Deprecated: define(): Declaration of case-insensitive constants is deprecated in /var/www/admin/data/mysite.ru/wp-content/themes/sirat/functions.php on line 326 Fatal error: Cannot declare class Sirat_Social_Widget, because the name is already in use in /var/www/admin/data/www/mysite.ru//wp-content/themes/sirat/inc/social-widgets/social-icon.php on line 119

как исправить данную проблему? Прикладываю файлы functions.php и отредактированный в дочерней теме social-icon.php

https://yadi.sk/d/7Qr7-RcgQo-gLA https://yadi.sk/d/SMyHI9Zb5jnYtg

Answer 1

Первая ошибка - это просто NOTICE о том, что в php 7.3 изменили работу с define().

Попробуйте так, должно помочь.

define('SIRAT_CREDIT',__('https://www.vwthemes.com/themes/free-multipurpose-wordpress-theme/','sirat'));

файл functions.php, строка 326

Сам не проверял, вот тут рекомендуют: https://wordpress.org/support/topic/define-declaration-of-case-insensitive-constants-is-deprecated/

Если кратко, то без этой конструкции __() вот это значение 'sirat' обрабатывается как TRUE и задает для define функции case-insensitive параметр, который в php 8 хотят удалить полностью. А с этой конструкцией define становится case_sensitive

Подробнее об этом NOTICE - https://hackernoon.com/deprecations-and-changes-for-php-7-3-avoid-errors-7a5c4dbeaa8b

Ещё можно просто отключить WP_DEBUG в wp-config поставив false, спрятав таким образом некритические ошибки. (Это костыль как по мне, но до php 8 доживете с таким подходом).

Вернуться на php 7.2 тоже вариант (тоже костыльный).

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

Замените его в файле social-icon.php с Sirat_Social_Widget например на Sirat_Social_Widget_2 (во всех встречающихся местах), а так же его повторную инициализацию с sirat_custom_load_widget на sirat_custom_load_widget_2

Это должно будет исправить проблему.

Ещё обратите внимание что у вас двойной слеш в ошибке

/var/www/admin/data/www/mysite.ru вот тут // wp-content/themes/sirat/inc/social-widgets/social-icon.php

Возможно вы где-то не правильно указываете пути. Это мелочь, но глаз режет.

UPD

Вы используете get_stylesheet_directory() для получения пути при подключении файла вот тут:

require_once get_stylesheet_directory(). '/inc/social-widgets/social-icon.php';

Это не верно. Надо использовать get_template_part();

Правильно вставить в нужном месте:

get_template_part( 'widgets/social', 'icon' );

А в папке темы (там где лежит functions.php) создать подпапку с названием widgets и положить в неё файл social-icon.php

Прикрепляю переписанный файл social-icon.php Попробуйте его использовать.

https://yadi.sk/d/CB-zI5HzKDHerw

READ ALSO
400 bad request при обращении к api на laravel

400 bad request при обращении к api на laravel

Есть приложение на LaravelК нему прописано API по которому с микроконтроллера отсылаются данные методом Post и делается запись в базу

158
Php. Не могу подключиться к БД Mssql (sqlsrv)

Php. Не могу подключиться к БД Mssql (sqlsrv)

SQLSTATE[IMSSP]: This extension requires the Microsoft ODBC Driver for SQL Server to communicate with SQL ServerAccess the following URL to download the ODBC Driver for SQL Server for x64: https://go

91
необычная связь Entity OneToOne doctrine

необычная связь Entity OneToOne doctrine

Существует Entity в которой нужно реализовать связь OneToOne, но проблема в том, что связь между ними осуществляется по полям не являющимся ключевыми...

64
Возможно обновлять товары в AliExpress через код с помощью файла?

Возможно обновлять товары в AliExpress через код с помощью файла?

Нашёл документацию как можно обновить товары через загрузку YML-файла (https://sellaliexpress

104