scottb
  • 0
Гуру

«Не удалось активировать плагин, так как произошла фатальная ошибка.»

  • 0

Код ниже содержится в файле плагина. Он просто пытается выполнить запрос на обновление базы данных wp. Однако это приводит к фатальной ошибке.

Fatal error: Cannot redeclare ce3_cleanup()

Нужно ли загружать файл конфигурации, чтобы получить доступ к $wpdb->query?

function ce3_cleanup()
{
    $wpdb->query("update wp_postmeta set meta_key=replace(meta_key,'cb2_customHeader','_cb2_customHeader') where meta_key like 'cb2_customHeader'");
    $wpdb->query("update wp_postmeta set meta_key=replace(meta_key,'cb2_customTitle','_cb2_customTitle') where meta_key like 'cb2_customTitle'");
}
register_activation_hook(__FILE__, 'ce3_cleanup');
?>
Share
  1. Рекомендуемый способ написания этой функции:

    function ce3_cleanup() {
        global $wpdb;
    
        $wpdb->query( "update $wpdb->postmeta set meta_key=replace(meta_key,'cb2_customHeader','_cb2_customHeader') where meta_key like 'cb2_customHeader'" );
        $wpdb->query( "update $wpdb->postmeta set meta_key=replace(meta_key,'cb2_customTitle','_cb2_customTitle') where meta_key like 'cb2_customTitle'" );
    }
    register_activation_hook( __FILE__, 'ce3_cleanup' );
    
    • 0
    • Хм, я добавил глобальную $wpdb внутрь функции, и она наконец заработала! Не уверен насчет повторного объявления бизнеса. у меня такой функции нет нигде..

      • 0
    • Ну, я говорю, это сработало. По крайней мере, это не выдавало ошибку, но предыдущие записи, которые были без подчеркивания, еще не отображаются с подчеркиванием… пойди разберись. Я должен изучить этот стол.

      • 0
    • Всякий раз, когда вы используете $wpdb функцию, вам нужно убедиться, что она находится в той же области… просто используя $wpdb ссылки на локальную область… если вы хотите использовать фактический $wpdb объект, вам нужно это глобальное ключевое слово. Но фактическое сообщение об ошибке, которое вы получили, не имело ничего общего с $wpdb вызывающей его функцией, а не с самым полезным сообщением об ошибке в мире.

      • 0
  2. Нет, Cannot redeclare... означает, что у вас уже есть функция с именем ce3_cleanup() где-то еще на вашем сайте. Возможно в другом плагине или в вашей теме.

    • 0

Оставить ответ

You must login to add an answer.