How to create a master without relying on posts table

Just I want to create the Project master, there I’ll maintain the fields like ‘Project type’, ‘Project Category’ and ‘Project name’. I’ve created the table in DB.
I thought it is easy to achieve in Custom post type. So I followed the following steps

  1. Created the custom post type as ‘Project’
  2. Created the Meta box and fields to get the user input for ‘Project type’, ‘Project Category’ and ‘Project name’
  3. On save, via hook ‘save_post’, I got the user input through $_POST and saved the data in custom table( eg: wp_projects )
  4. The real problem occurred while listing the entries, I’ve used the ‘custom_column’ function, but it requires the post ID. But I haven’t used post table to save the Projects.
  5. In ‘custom_column’ function I don’t know how to iterate the Project table entries without using Post ID

One of my colleague suggest me to use ‘wp_list_tables’ class to list the entries in the custom table. I did the same, but here I’m not sure what will be the link to edit the custom table entries.

I’m struggling to create the master without using the Posts table. I don’t want to insert the entries unnecessarily in post table, because that table is not suites to the Project table fields.

Thanks in advance.

Solutions Collecting From Web of "How to create a master without relying on posts table"

This Question is kind of vogue but I’ll try to answer best to my understanding (mostly from the comments)

You can either use the build in post types where the pros are : A built in Admin UI,
Easy queries wrapper, and built in table listing, but the cons, as far as i can tell is the unnecessary fields in the posts table.

Or you can use your custom table which will store just the fields you need but the cons here are that you will have to write your wrappers to working with it including creating your tables listing from (almost) scratch and create your own admin UI to manage and use the project records.

Sure the easy way would be to use the custom post type but I do understand the major problem it presents if you don’t have any use for most of the fields and you expect 100,000 of records (anything less shouldn’t be a problem or cause performance issues, just a big table in the database).

So i guess its up to you which way is better to go with.