Как исправить ошибку Cannot redeclare в WordPress?

Ссылка скопирована
1 ответ

Хотел натянуть верстки на Wordpress. Подключаю стили бутстрапа в файле темы functions.php, объявил функцию:

function eurekasmile_scripts() {     wp_enqueue_style( 'eurekasmile_bootstrap', get_template_directory_uri() . '/assets/bootstrap/css/bootstrap.css');  }

function eurekasmile_scripts() { wp_enqueue_style( 'eurekasmile_bootstrap', get_template_directory_uri() . '/assets/bootstrap/css/bootstrap.css'); }

обновляю сайт, выходит ошибка:
Fatal error: Cannot redeclare eurekasmile_scripts() (previously declared in C:OSPaneldomainseurekakidswp-contentthemeseurekasmilefunctions.php:4) in C:OSPaneldomainseurekakidswp-contentthemeseurekasmilefunctions.php on line 3

и какое бы название функции не дал, у меня выходит ошибка эта, только в тексте меняется название функции. в чем может быть причина?
нигде больше я эту функцию не объявлял, только создаю тему

Дополнительно:

Ответы:

function add_my_style() {     wp_enqueue_style( 'eurekasmile_bootstrap', get_template_directory_uri() . '/assets/bootstrap/css/bootstrap.css'); } add_action( 'wp_enqueue_scripts', 'add_my_style' );

function add_my_style() { wp_enqueue_style( 'eurekasmile_bootstrap', get_template_directory_uri() . '/assets/bootstrap/css/bootstrap.css'); } add_action( 'wp_enqueue_scripts', 'add_my_style' );

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Максим Павлов Ответ

Ошибка Cannot redeclare eurekasmile_scripts() означает, что PHP встретил объявление функции с таким именем второй раз в рамках одного запроса. Если имя меняете, а ошибка всё равно возникает с новым именем, вероятно файл functions.php подключается дважды или внутри него есть дублирующий фрагмент кода.

Проверьте:

  • нет ли двух одинаковых функций в functions.php;
  • не подключаете ли Вы functions.php вручную через require;
  • не создали ли дочернюю/родительскую тему с одинаковыми функциями;
  • нет ли копии кода в плагине или snippet-плагине;
  • нет ли синтаксической ошибки, из-за которой строка повторилась при вставке.

Правильное подключение Bootstrap:

function eurekasmile_enqueue_assets() {
    wp_enqueue_style(
        'eurekasmile-bootstrap',
        get_template_directory_uri() . '/assets/bootstrap/css/bootstrap.css',
        [],
        '1.0'
    );
}
add_action('wp_enqueue_scripts', 'eurekasmile_enqueue_assets');

function eurekasmile_enqueue_assets() { wp_enqueue_style( 'eurekasmile-bootstrap', get_template_directory_uri() . '/assets/bootstrap/css/bootstrap.css', [], '1.0' ); } add_action('wp_enqueue_scripts', 'eurekasmile_enqueue_assets');

Обратите внимание: хук называется wp_enqueue_scripts, даже для стилей. Если есть риск повторного объявления, можно временно защитить функцию:

if (!function_exists('eurekasmile_enqueue_assets')) {
    function eurekasmile_enqueue_assets() {
        // enqueue
    }
}

if (!function_exists('eurekasmile_enqueue_assets')) { function eurekasmile_enqueue_assets() { // enqueue } }

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

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно