簡體   English   中英

WordPress插件激活創建表

[英]Wordpress plugin activation creating table

我正在嘗試使用激活時的wordpress插件創建一個表。 我有這個,它不起作用:

function activate_cron() {
    global $wpdb;

    $charset_collate = $wpdb->get_charset_collate();
    $table_name = $wpdb->prefix . "fbcron";

    $sql = "CREATE TABLE ".$table_name." (
    id int(11) NOT NULL AUTO_INCREMENT,
    post_id int(11) NOT NULL,
    PRIMARY KEY  (id)
    ) ".$charset_collate.";";

    require_once( '../../../wp-admin/includes/upgrade.php' );
    dbDelta($sql);
}

register_activation_hook( __FILE__, 'activate_cron' );

我相信對於dbDelta來說,整理需要獨立進行。 通過將變量嵌入到字符串中,可以更容易地確保間距正確:

$sql = "CREATE TABLE {$table_name} (
id int(11) NOT NULL AUTO_INCREMENT,
post_id int(11) NOT NULL,
PRIMARY KEY  (id)
) 
{$charset_collate};";

我認為您在wp-admin/includes/upgrade.php路徑上有問題我改進了您現有的代碼,經過測試

function activate_cron() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'fbcron';
    //check if table exist
    if($wpdb->get_var("SHOW TABLES LIKE '$table_name';") != $table_name) {      
        $sql = "CREATE TABLE ".$table_name." (
        id int(11) NOT NULL AUTO_INCREMENT,
        post_id int(11) NOT NULL,
        PRIMARY KEY  (id)
        ) ".$charset_collate.";";

        require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); //this path
        dbDelta($sql);
        }
    }

register_activation_hook( __FILE__, 'activate_cron' );

希望能幫助到你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM