Das Plugin erzeugte x Zeichen unerwarteter Ausgabe, $ wpdb nicht definiert

Ich habe ein einfaches WordPress-Plugin geschrieben, um eine neue databasetabelle zu erstellen. Die neue Tabelle sollte erstellt werden, wenn das Plugin aktiviert ist. Wenn ich versuche, das Plugin zu aktivieren, erhalte ich folgende Fehlermeldung:

The plugin generated 3989 characters of unexpected output during activation. If you notice “headers already sent” messages, problems with syndication feeds or other issues, try deactivating or removing this plugin. 

betonter Text Dies ist offensichtlich ein Ergebnis der Tatsache, dass $ wbdb nicht definiert ist. xDebug gibt Folgendes aus:

 [Mon Feb 04 ] [error] PHP Notice: Undefined variable: wpdb in test.php on line 13 

Das gesamte Plugin besteht aus:

 prefix . 'test_db_name'; function test_install_plugin() { global $wpdb; global $test_db_name; $sql = "CREATE TABLE " . $test_db_name . " ( `id` int(9) NOT NULL AUTO_INCREMENT, UNIQUE KEY id (id) );"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); } register_activation_hook(__FILE__,'test_install_plugin'); ?> 

Ich habe keine anderen Plugins installiert. Warum ist $ wpdb nicht definiert? Gibt es eine Standardmethode zum Erstellen einer neuen databasetabelle beim Aktivieren eines Plugins?

Solutions Collecting From Web of "Das Plugin erzeugte x Zeichen unerwarteter Ausgabe, $ wpdb nicht definiert"

$wpdb liegt außerhalb des Bereichs Ihrer Plugin-Datei, Sie brauchen global $wpdb; vor der Verwendung von $wpdb->prefix

Ihr Plugin versucht, auf $ wpdb zuzugreifen, bevor es existiert. Sie müssen es wie folgt in einen Aktions-Hook einpacken:

 < ?php /** * Plugin Name: Test Plugin * Plugin URI: http://everybytcaptive.com * Description: A test plugin. * Version: 1.0 * Author: Christopher Green * Author URI: http://everybytecaptive.com */ add_action( 'init', 'test_install_plugin' ); function test_install_plugin() { global $wpdb; global $test_db_name; $test_db_name = $wpdb->prefix . 'test_db_name'; $sql = "CREATE TABLE " . $test_db_name . " ( `id` int(9) NOT NULL AUTO_INCREMENT, UNIQUE KEY id (id) );"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); } // commented out for now, worry about running activation later // register_activation_hook(__FILE__,'test_install_plugin'); 

Ich empfehle dringend, alles, was Sie bei Google über Aktionen und Filter in WordPress finden können, zu verschlingen. Sie sind corekonzepte, die Sie vollständig verstehen müssen, um Plug-ins und Designs effektiv zu erstellen.