【问题标题】:First wordpress plugin making第一个wordpress插件制作
【发布时间】:2015-10-23 18:21:57
【问题描述】:

我正在制作我的第一个 wordpress 插件,我想在激活插件时在我的数据库中制作表格。我完全按照 wordpress 社区所说的那样编写代码,但它不起作用。我尝试了几次,但结果是一样的。我也想知道我的插件在我的主插件菜单中显示了 2 个子菜单,就像

我的插件 -- 我的插件 -- 我的子菜单页面

请帮助我是插件开发的新手。

// 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>";
}

【问题讨论】:

  • 你最想要的是什么?解决子菜单问题或其他问题?
  • 谢谢哥们,我自己找到了两者的解决方案。

标签: plugins wordpress


【解决方案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',
        ''
    );
}

原因是每个第一个子菜单的目标页面/功能将与主菜单目标相同。

【讨论】:

  • 请将您的两个答案合并为一个规范答案,并在下次正确格式化您的代码。谢谢!
【解决方案2】:

好的,我自己得到了答案

// 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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多