How to integrate custom database table in WordPress and using WordPress functions

The question:

I’m on WordPress 3.0.4 and I’m having a hard time deciding which way to go. The following is my problem:

I have a mysql database table widgets, with about 10 properties like id, size, color etc.

Now I’d like to integrate this table into WordPress, preferably in such a way that I can get paginated lists of the widgets, show information on a single widget and have a flexible layout.

Preferably, I would like the ability to change a custom template in such a way that I can change the position of each property on the page (So maybe I’d like to put e.g. the size-property on top of the page on the left, later I might want to put it on the right bottom).

What would be the best way to store the widgets, retrieve them by using as much WordPress build-in functions and how can I get this flexible layout as well?

I’ve written my own plugins before, so I have more than basic knowlegde on WordPress/PHP/MySQL.

The Solutions:

Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.

Method 1

This is precisely what custom post types are for.

If it were my project, I’d scrap the custom table you have, set up a custom post type for your “widgets”, add all your existing widgets as regular WP content, and use standard WordPress functions and templates to query and display them.

It’s a bit of investment in the short term (if you have a lot of existing data you need to migrate), but in the long run it’s best to have all your content in standard WordPress tables and display it using standard WordPress functions and templates–unless there’s a really compelling reason not to.

Method 2

If this table is in same database as your WordPress installation you can use $wpdb to get data from it. Otherwise you can instantiate your own wpdb object with connection details for other database.

I am not sure what do you mean by widgets in this case, doesn’t sound like same thing as WordPress widgets? Since I am fuzzy on this I have no suggestions how to handle template for those.

Method 3

FWIW, we’ve done something like this where we ARE pulling the data from an external data source. We created custom post types and created functions that are triggered by different wordpress hooks, with the result that we can show everything both up front to site visitors and in wp-admin. The posts are not stored in wpdb, not even as “proxy” posts.

So it IS possible to do it that way, although we have yet to figure out a way to use the trash can to delete them, and I ended up adding in my own wp-admin pagination links using JQuery.

Unless you have a very good reason to do it this way, I agree with @MathSmath: create a custom post type and store them as “real” wordpress posts.

Method 4

As far as I know what you wanted to do can be easily achieved using Caspio. You don’t even have to use any database. They provide a online database on top of which you can create all sorts of database-driven functioinalites. Here’s a video I saw from them that shows how to build and embed a searchable contacts database on a WP site in just a few mins without any coding: https://www.youtube.com/watch?v=BgHV7ZPplo0

Hope this helps!


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Comment