我的插件有一個主檔案,其中包含以下內容:
<?php
/**
Plugin info
*/
define( 'PLUGIN__DIR', plugin_dir_path( __FILE__ ) );
require_once( PLUGIN__DIR . 'class.properties.php' );
// Init properties
add_action( 'init', array( 'properties', 'init' ) );
在需要的類中,我添加了一個register_activation_hook需要創建一些表的類。我注意到沒有添加任何表格,所以我嘗試添加一個die()orwp_die()以查看它是否出現在那里,但是激活插件時沒有任何反應。
所以我猜它永遠不會到達激活掛鉤,但為什么呢?
我錯過了什么?
我的包含激活掛鉤的類:
<?php
class Properties
{
private static $initiated = false;
public static function init()
{
if (!self::$initiated) {
self::initHooks();
}
}
private static function initHooks()
{
self::$initiated = true;
register_activation_hook(PLUGIN__DIR, 'initTables');
add_menu_page('Properties', 'Properties', 'manage_options', 'properties/overzicht', array(__CLASS__, 'propertiesIndex'), 'dashicons-admin-multisite', 6);
}
public static function initTables()
{
wp_die();
global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
$sql = "
CREATE TABLE ". $wpdb->prefix ."properties (
id int(10) UNSIGNED NOT NULL,
office_id int(10) UNSIGNED NOT NULL,
system varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
reference varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
tiara_id varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
active tinyint(1) NOT NULL DEFAULT '1',
vertrouwelijk tinyint(1) NOT NULL DEFAULT '0',
publish tinyint(1) NOT NULL DEFAULT '1',
featured tinyint(1) NOT NULL DEFAULT '0',
hidden tinyint(1) NOT NULL DEFAULT '0',
quiet tinyint(1) NOT NULL DEFAULT '0',
straat varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
huisnummer varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
huisnummer_toevoeging varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
postcode varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
wijk varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
gemeente varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
plaats varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
provincie varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
land varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
latitude decimal(10,8) DEFAULT NULL,
longitude decimal(11,8) DEFAULT NULL,
status varchar(40) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
aanmelding varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
koop tinyint(1) NOT NULL DEFAULT '0',
koopprijs_voorvoegsel varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
koopprijs int(10) UNSIGNED DEFAULT NULL,
koopprijs_conditie varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
koopprijs_specificatie varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
vov_datum datetime DEFAULT NULL,
vov_datum_tot datetime DEFAULT NULL,
transactie_datum datetime DEFAULT NULL,
woz_waarde int(10) UNSIGNED DEFAULT NULL,
woz_peildatum date DEFAULT NULL,
koopmengvorm varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
huur tinyint(1) NOT NULL DEFAULT '0',
huurprijs_voorvoegsel varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
huurprijs int(10) UNSIGNED DEFAULT NULL,
huurprijs_conditie varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
huurprijs_specificatie varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
prijs_tonen tinyint(1) NOT NULL DEFAULT '1',
servicekosten int(10) UNSIGNED DEFAULT NULL,
aanvaarding varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
aanvaarding_datum datetime DEFAULT NULL,
aanvaarding_toelichting varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
omschrijving longtext COLLATE utf8mb4_unicode_ci,
omschrijving_engels text COLLATE utf8mb4_unicode_ci,
gekoppelde_makelaar varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
bouwvorm varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
openhuis_van datetime DEFAULT NULL,
openhuis_tot datetime DEFAULT NULL,
openhuis_toelichting text COLLATE utf8mb4_unicode_ci,
ingevoerd_op datetime NOT NULL,
gewijzigd_op datetime DEFAULT NULL,
veiling_op datetime DEFAULT NULL,
gewijzigd_status_op datetime DEFAULT NULL,
gewijzigd_media_op datetime DEFAULT NULL,
gewijzigd_prijs_op datetime DEFAULT NULL,
verwijderd_op datetime DEFAULT NULL,
created_at timestamp NULL DEFAULT NULL,
updated_at timestamp NULL DEFAULT NULL,
bouwtype_id int(10) UNSIGNED DEFAULT NULL,
url_360 varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
url_tour varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
url_youtube varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
url_floorplanner varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
show_maps tinyint(1) NOT NULL DEFAULT '1',
show_streetview tinyint(1) NOT NULL DEFAULT '1',
prioriteit int(11) DEFAULT NULL,
accountmanager varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL
PRIMARY KEY (id)
)". $charset_collate .";";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
public static function propertiesIndex()
{
include 'views/index.php';
}
}
我還嘗試從我的類中洗掉激活掛鉤并將其添加到 init 操作上方的主插件檔案中,如下所示:
define( 'PLUGIN__DIR', plugin_dir_path( __FILE__ ) );
require_once( PLUGIN__DIR . 'class.properties.php' );
// Init properties
register_activation_hook( PLUGIN__DIR, array( 'Properties', 'initTables' ) );
add_action( 'init', array( 'properties', 'init' ) );
但是又沒有結果。為什么我的激活掛鉤沒有觸發?
uj5u.com熱心網友回復:
的第一個引數register_activation_hook必須是插件的檔案名,包括路徑,但您傳遞的是插件目錄。
并且register_activation_hook必須在 init 鉤子之外。所以讓我們試試這個:
define( 'PLUGIN__DIR', plugin_dir_path( __FILE__ ) );
require_once( PLUGIN__DIR . 'class.properties.php' );
// Init properties
register_activation_hook( __FILE__, array( 'Properties', 'initTables' ) );
add_action( 'init', array( 'properties', 'init' ) );
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/537836.html
標籤:PHP数据库WordPress的wordpress插件创建
下一篇:何時在docker中重建影像?
