web-dev-qa-db-ja.com

「プラグインが致命的なエラーを引き起こしたため、アクティブ化できませんでした。」

以下のコードはプラグインファイルに含まれています。それはちょうど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');
?>
1
Scott B

その関数を書くためのお勧めの方法は次のとおりです。

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
sorich87

いいえ、Cannot redeclare...は、あなたのサイトのどこかにce3_cleanup()という名前の関数が既に存在することを意味します。おそらく他のプラグインかあなたのテーマにあります。

2
EAMann