2015-09-25 67 views
0

我正在製作我的第一個wordpress插件,我想在我的數據庫中創建表格,當我激活插件。我寫的代碼正是WordPress社區說的,但它不起作用。我試了幾次,但結果是一樣的。我也想知道我的插件顯示在我的主菜單中的插件子菜單2,這就像第一個wordpress插件製作

我的插件 - 我的插件 - 我的子菜單頁面

請幫助我是很新的插件開發。

// Registering plugin 
register_activation_hook(__FILE__, 'myplugin_activate'); 

//Deactivate plugin 

register_deactivation_hook(__FILE__, 'myplugin_deactivate'); 

function myplugin_activate() { 

    global $wpdb, $table_prefix; 
    global $favoritethis_db_version; 


    $table_name = $table_prefix. 
    'my-plugin-table'; 

    $charset_collate = $wpdb - > get_charset_collate(); 

    if ($wpdb - > get_var("show tables like '$table_name'") != $table_name) { 
     require_once(ABSPATH. 
      'wp-admin/upgrade-functions.php'); 
     $sql = "CREATE TABLE ".$table_name. 
     " (
     id mediumint(9) NOT NULL AUTO_INCREMENT, 
      time datetime DEFAULT '0000-00-00 00:00:00' 
     NOT NULL, 
     name tinytext NOT NULL, 
     text text NOT NULL, 
     url varchar(55) DEFAULT '' 
     NOT NULL, 
     UNIQUE KEY id(id) 
    ) $charset_collate; 
    "; 
} 
require_once(ABSPATH. 
    'wp-admin/includes/upgrade.php'); 
dbDelta($sql); 

} 

function myplugin_deactivate() { 

    // Deactivation code here... 
    echo "<script>alert('Ohhh.. no baby the plugin is deactivated now..')</script>"; 
} 
+0

什麼是你想要的出色?解決子菜單問題還是其他問題? –

+0

感謝budy我在自己找到了兩者的解決方案。 –

回答

1

還我發現這個問題的解決方案,我正面臨着爲獲得額外的子菜單,相同的名稱,在主菜單就是答案。

解決方案

//Main admin menus 
add_action('admin_menu', 'add_my_custom_menu'); 

function add_my_custom_menu() { 

    //add an item to the menu 
    add_menu_page(
     'My Plugin', 
     'My Plugin', 
     10, 
     plugin_dir_path(__FILE__). 
     'admin/plugin-form.php', 
     '', 
     plugin_dir_url(__FILE__). 
     'img/contact.png' 
    ); 
    add_submenu_page(
     'my-plugin-name/admin/plugin-form.php', 
     'Plugin Setting', 
     'Plugin Setting', 
     10, 
     plugin_dir_path(__FILE__). 
     'admin/plugin-form.php', 
     'myplugin_options_page' 
    ); 
    add_submenu_page(
     'my-plugin-name/admin/plugin-form.php', 
     'Plugin Entries', 
     'Plugin Entries', 
     10, 
     plugin_dir_path(__FILE__). 
     'admin/entries.php', 
     '' 
    ); 
} 

原因是,每一個第一子菜單的目標頁/功能將是相同的主菜單目的地。

+0

請將您的兩個答案合併到一個規範的答案中,並在下次正確格式化您的代碼。謝謝! –

0

好,我給自己買了

// Registering plugin 
register_activation_hook(__FILE__, 'myplugin_activate'); 

//Deactivate plugin 
register_deactivation_hook(__FILE__, 'myplugin_deactivate'); 


function myplugin_activate() { 

    global $wpdb; 
    $table_name = $wpdb - > prefix. 
    'my-plugin-table'; 


    //nstalled_ver = get_option('my-voting-version'); 

    if ($wpdb - > get_var("show tables like '$table_name' ") != $table_name) { 
     require_once(ABSPATH. 
      'wp-admin/upgrade-functions.php'); 
     $sql = "CREATE TABLE IF NOT EXISTS `".str_replace('`', '', $table_name). 
     "` (
     id mediumint(9) NOT NULL AUTO_INCREMENT, 
      time datetime DEFAULT '0000-00-00 00:00:00' 
     NOT NULL, 
     name tinytext NOT NULL, 
     text text NOT NULL, 
     url varchar(55) DEFAULT '' 
     NOT NULL, 
     UNIQUE KEY id(id) 
    ); 
    "; 
} 
require_once(ABSPATH. 
    'wp-admin/includes/upgrade.php'); 
dbDelta($sql); 
}