register_activation_hook בפלאגין - לא עובד
-
יש לי תוסף עצמי בוורדפרס שלי
שכתוב בו כך:define (MY_HEANDLE_URL , plugin_dir_path(__FILE__)); include( plugin_dir_path( __FILE__ ) . 'installDB.php'); register_activation_hook( MY_HEANDLE_URL . 'installDB.php', 'jal_install' );
ובקובץ installDB.php שבאותה תיקיה:
function jal_install () { global $wpdb; $table_name = $wpdb->prefix . "api_users"; $charset_collate = $wpdb->get_charset_collate(); $sql = "CREATE TABLE $table_name ( id mediumint(9) NOT NULL AUTO_INCREMENT, name varchar(10) NOT NULL, PRIMARY KEY (id) ) $charset_collate;"; require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); dbDelta( $sql ); }
ובכל זאת, מסד הנתונים לא נוצר, אם לא בקריאה ישירה לפונקציה
jal_install();
איפה הבעיה ?
-
@איש-נחמד
הטיעון הראשון של הregister_activation_hook הוא נתיב הקובץ הראשי של התוסף (ולא נתיב לקובץ הפונקציה)
מה שתצטרך לעשות הוא כך (בתנאי שאכן זה נכתב בקובץ הראשי של התוסף) :register_activation_hook( __FILE__ , 'jal_install' );
שים לב שאחר שעשית יבוא לקובץ installBD הפונקציה קיימת כאן בקובץ ואין צורך לספר לPHP על מיקום הפונקציה.
באופן יותר מסודר וחסכני הייתי עושה כך:
define (MY_HEANDLE_URL , plugin_dir_path(__FILE__)); register_activation_hook( __FILE__, 'active_plugin' ); function active_plugin() { require_once(MY_HEANDLE_URL . 'installDB.php'); jal_install() }