Title: plugin development with custom database tables
Last modified: August 20, 2016

---

# plugin development with custom database tables

 *  [rsatdcms](https://wordpress.org/support/users/rsatdcms/)
 * (@rsatdcms)
 * [13 years, 4 months ago](https://wordpress.org/support/topic/plugin-development-with-custom-database-tables-1/)
 * Hola,
 * Bit more of a generic development question, so apologies if this is the wrong
   section, but I am rather lost after looking at the documentation and googling
   with this.
 * So wanted to ask seasoned developers if there is a better solution to do what
   I want. Writing a plugin at the moment that will create 2 extra tables to core
   wp which will store some data that registered users can post.
 * Say as an example its a book database, so one table will have book category and
   the other book titles (with some random meta data, like dates, users who post
   that). So the tables would look like:
 * table1:
    id, varchar, date, user table2: id, int, date, table_1_link, user
 * Something along these lines, so the real question is, can I use the API that 
   wp provides to create this (and if so a tip pointed at the right direction would
   be appreciated)? For example to output an actions menu for a specific “page” 
   looking url [http://www.example.com/books/new](http://www.example.com/books/new)
   or [http://www.example.com/books/edit](http://www.example.com/books/edit) I don’t
   quiet mind how actions are represented as urls, just as long as they are sensible.
   Can I somehow catch the actions that I want using wp rather then referring to
   $_POST[‘action’] in the plugin?
 * Tried using custom_post_type, but I don’t think this is what I am looking for,
   since the data I want to store/display isn’t a massive text field but is not 
   shared between users (so their book database example would be private to themselves).
 * So far the only way to do what I want involves creating a page where the plugin
   runs from with [plugin] and in the plugin trying to catch actions for new/edit/
   delete using $_POST. Is there a more sensible framework like solution for this
   in wp (that I just keep missing)?
 * Cheers for the help!

Viewing 4 replies - 1 through 4 (of 4 total)

 *  [redrocksrover2](https://wordpress.org/support/users/redrocksrover2/)
 * (@redrocksrover2)
 * [13 years, 4 months ago](https://wordpress.org/support/topic/plugin-development-with-custom-database-tables-1/#post-3413304)
 * [http://codex.wordpress.org/Creating_Tables_with_Plugins](http://codex.wordpress.org/Creating_Tables_with_Plugins)
 *  [indybook](https://wordpress.org/support/users/indybook/)
 * (@indybook)
 * [13 years, 4 months ago](https://wordpress.org/support/topic/plugin-development-with-custom-database-tables-1/#post-3413310)
 * Hi.
    If i get it, you want: – sort of a private book ‘shelve’ **per user**? –
   the books are not posts
 * again, if I get it right and it’s all is around a user, I’d think of using the
   user profile actions. I’d add an option page to the user admin area or just customize
   the native profile, adding whatever i need there: field groups, download buttons,
   ect.. it’ll insert the book data into a user db metadata so i’d have full control
   over the output based on a user id and i won’t need a plugin.
 *  Thread Starter [rsatdcms](https://wordpress.org/support/users/rsatdcms/)
 * (@rsatdcms)
 * [13 years, 4 months ago](https://wordpress.org/support/topic/plugin-development-with-custom-database-tables-1/#post-3413325)
 * Hola
 * Creating the extra tables with the plugin initialisation works fine, that’s not
   the problem :).
 * Well the book thing was just an example, realistically I am expecting up to 10
   entries in the first table and maybe several hundred+ (if I am lucky) in the 
   second one per user. Would this be efficient in wp environment to use metadata
   over a separate table with soft links (storing userid as the owner of the entry)?
 * From what I found so far my option is to write the data handling myself ie in
   the plugin to call $_POST[], check if they are submitted ect. I was mostly wondering
   if there were provisions to catch “basic” actions of posting some data from a
   form embedded in a page (be that a real page or just a url route, which ever 
   makes more sense to implement).
 * I think displaying data isn’t that much of a problem from me, its more grabbing/
   parsing it when users post the form from a url. I want to write the plugin in
   such a way that it would not be limited to a hardcoded url for example so that
   it would catch that form from any installation/whatever you want to use as [http://www./books/](http://www./books/)
   or [http://www./buckets](http://www./buckets) and catch actions in the wp way
   rather then however I would end up using $_POST[] directly.
 * I am pretty new to this, and have not found guidelines to parsing user input 
   dynamically yet. If this is even possible… But I do like the ease of using wp
   for the CMS side of things.
 *  Moderator [bcworkz](https://wordpress.org/support/users/bcworkz/)
 * (@bcworkz)
 * [13 years, 4 months ago](https://wordpress.org/support/topic/plugin-development-with-custom-database-tables-1/#post-3413361)
 * I’m not keen on actions in the permalink structure, it should be reserved for
   data structure terms IMO. You can still add URL parameters to permalinks though
   there’s no file spec: example.com/books/self-help/?action=delete . Of course,
   if there’s much data involved, you don’t want to use URL parameters. For POSTing
   forms, I would embed the action in a hidden input field. I see no issue with 
   grabbing action values directly from $_GET or $_POST… straight from the source!
   Much easier than trying to parse the URL as well.
 * Though you have your own tables, you can still use the methods of the $wpdb global
   object to interact with the database.

Viewing 4 replies - 1 through 4 (of 4 total)

The topic ‘plugin development with custom database tables’ is closed to new replies.

## Tags

 * [api](https://wordpress.org/support/topic-tag/api/)
 * [custom](https://wordpress.org/support/topic-tag/custom/)

 * In: [Hacks](https://wordpress.org/support/forum/plugins-and-hacks/hacks/)
 * 4 replies
 * 4 participants
 * Last reply from: [bcworkz](https://wordpress.org/support/users/bcworkz/)
 * Last activity: [13 years, 4 months ago](https://wordpress.org/support/topic/plugin-development-with-custom-database-tables-1/#post-3413361)
 * Status: not resolved

## Topics

### Topics with no replies

### Non-support topics

### Resolved topics

### Unresolved topics

### All topics
