【WordPress/プラグイン】Fatal error: Cannot redeclare uninstall()

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【WordPress/プラグイン】Fatal error: Cannot redeclare uninstall()

2023-7-20 | ,

WordPressで古の自作プラグインを更新したら表示されたFatal errorをなんとかしたい!

エラーの一部を抜粋。

Fatal error: Cannot redeclare uninstall() (previously declared
...

概要

今回の記事では、WordPressで古の自作プラグインを更新したら表示されたFatal errorをなんとかする手順を掲載する。

環境

  • WordPress 6.2.2
  • PHP 7.4.26

手順書

このエラーは関数<function name>が重複して定義されてると発生する。

Fatal error: Cannot redeclare <function name>() ...

下記の場合はuninstallというプラグインを削除した際に実行する関数が重複して定義されてる為、エラーが発生してる。

Fatal error: Cannot redeclare uninstall() ...
...

新しいuninstall関数を作った覚えはないんだけども何故なんだ!!

WordPressのプラグインの仕様が変わったようでプラグインが削除された際に実行する処理は、プラグインのルートディレクトリにuninstall.phpというファイルを作って、下記のような感じに入力する。

<?php
if (!defined('WP_UNINSTALL_PLUGIN')) {
    die;
}

// プラグインを削除された時に実行する処理(例:オプションを消す)
delete_option('my_plugin_setting');
...
?>

プラグインが無効化された場合の処理は下記のような感じ。

<?php
...

function deactivation_plugin()
{
    // プラグインを無効化された時に実行する処理(例:オプションを消す)
    delete_option('my_plugin_setting');
}
register_deactivation_hook( __FILE__, 'deactivation_plugin' );

...
?>

まとめ(感想文)

古の時代のプラグインを更新すると…いろいろ起きちゃうよね!!!