Поддержка Плагины визуализация базы данных в админке для пользователя

  • Решено jhonnyk

    (@jhonnyk)


    Всем привет, пытаюсь на вордперссе написать свой плагин. В котором будет одна база данных и пользователь из под админики сможет ее редактировать (удалять, добавлять, изменять). Создал базу данных, но не могу понять как ее визуализировать, для пользователя — нужно ли создавать input’ы для каждого поля и кнопки отдельно или все таки в wordpress есть для таких типовых задач уже встроенные механизмы? Мой код ниже:

    <?php
    /*
    Plugin Name: msv-Price item
    Description: Create the list with hierarchies of services
    Version: 1.0
    */
    
    global $jal_db_version;
    $jal_db_version = '1.0';
    
    function jal_install() {
        global $wpdb;
        global $jal_db_version;
    
        $charset_collate = $wpdb->get_charset_collate();
        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
    
        $table_name_price_cat = $wpdb->prefix . 'price_cat';    
    
        $price_cat_sql = "CREATE TABLE $table_name_price_cat (
            id  int(120) NOT NULL AUTO_INCREMENT,
            name varchar(255) NOT NULL,
            PRIMARY KEY  (id)
        ) $charset_collate;";   
        dbDelta( $price_cat_sql );
    
        $table_name_price_items = $wpdb->prefix . 'price_items';
        $price_items_sql = "CREATE TABLE $table_name_price_items (
            id int(120) NOT NULL AUTO_INCREMENT,
            name varchar(255) NOT NULL,
            price double(10,2) NOT NULL,
            cat_id  int(11) NOT NULL,
            ordering int(11) NOT NULL,
            FOREIGN KEY  (cat_id) REFERENCES ".$table_name_price_cat."(id),
            PRIMARY KEY  (id)
        ) $charset_collate;";
        dbDelta( $price_items_sql );
        add_option( 'jal_db_version', $jal_db_version );
    }
    
     function price_item_setup_menu(){
            add_menu_page( 'Price item setup page', 'Price item', 8, 'service_itemes', 'price_item_init' );
    }
    
    function price_item_init(){
    
        global $wpdb;
        $items = $wpdb->get_blog_prefix() . 'price_items';
        $categories = $wpdb->get_blog_prefix() . 'price_cat';
        $result = $wpdb->get_results("SELECT $items.id, $items.name, $items.price, $categories.name as cat 
                                      FROM $items,$categories WHERE $items.cat_id = $categories.id 
                                      ORDER BY cat_id", ARRAY_A);
        $currentLine = "";
        $closetags = "";
        foreach ($result as $info){
            if ($currentLine != $info['cat']){
                $currentLine = $info['cat'];
                echo $closetags;
                $closetags = "</table>";
                echo "<h2><center>".$info['cat']."</center></h2><table>";
            }
            echo "<tr><th><a href=#>".$info['name']."</a></th><th>".$info['price']."</th></tr>";        
        }
        echo "</table>";
    }
    
    register_activation_hook( __FILE__, 'jal_install' );
    register_activation_hook( __FILE__, 'jal_install_data' );
    add_action('admin_menu', 'price_item_setup_menu');
    
    ?>
Просмотр 2 ответов — с 1 по 2 (всего 2)
Просмотр 2 ответов — с 1 по 2 (всего 2)