0

プラグインを有効にしたときにワードプレスが「wp_locations」テーブルを作成しない理由を誰かが理解するのを手伝ってくれませんか。

global $wp_locations_version;
$wp_locations_version = "1.1";

define( 'LOCATIONURL', plugins_url().'/wp_locations' );

function locations_install() {
    global $wpdb;
    global $wp_locations_version;


    $sql = "CREATE TABLE IF NOT EXISTS wp_locations (
    ID BIGINT NOT NULL AUTO_INCREMENT,
    location VARCHAR(100) NOT NULL,
    address VARCHAR(255) NOT NULL,
    lattitude INT,
    longitude INT,
    description MEDIUMTEXT NULL,
    person VARCHAR(50) NOT NULL,
    personimg VARCHAR(255) NOT NULL,
    email VARCHAR(255) NULL,
    phone INT,
    sort INT
    );";

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

    add_option("wp_locations_version", $wp_locations_version);
}
register_activation_hook( __FILE__ , 'locations_install' );
4

2 に答える 2

1

SQL に少なくとも 1 つの KEY フィールドを含める必要があります。

http://codex.wordpress.org/Creating_Tables_with_Plugins#Creating_or_Updating_the_Tableから

  • SQL ステートメントでは、各フィールドを個別の行に配置する必要があります。

  • PRIMARY KEY という単語と主キーの定義の間には 2 つのスペースが必要です。

  • 同義語の INDEX ではなく、キーワード KEY を使用する必要があり、少なくとも 1 つの KEY を含める必要があります。

  • フィールド名の前後にアポストロフィやバッククォートを使用しないでください。

于 2012-11-12T08:55:49.160 に答える
0

コード内のデータベースへの接続はありません。次のような関数を追加します。

        function MySQLConnect( ) {
          $MySQLink = mysql_connect( DB_HOST, DB_USER, DB_PASSWORD ) ;// These parameters are defined in 'wp-config.php'
          if ( !$MySQLink ) :
            return FALSE ;
          else :
            return $MySQLink ;
          endif ;
        }

次に、関数locations_install()で、接続を確立するために最初に次の行を追加します。

        $Link = MySQLConnect( ) ;
        if ( !$Link ) return FALSE ;
        ...                        

お役に立てれば。

更新

スタンド修正スダー。

Wordpressでそれを行う方法は、新しい接続を必要としないクラスwpdbを使用する必要があります。その場合、次の問題が発生します。

require_once(ABSPATH . 'wp-admin/includes/upgrade.php');   

プラグインスクリプトはwp-adminから呼び出されます。そのはず:

require_once('/includes/upgrade.php');

誤解を招いてすみません。

于 2012-11-12T04:07:36.663 に答える