Adding Template Select and Image upload to custom post in WordPress

I have become a bit confused on the best way to move forward with something I’d like to achieve in WordPress. My problem is partly workflow I think and knowing the correct way to do what I’d like to achieve but also there may be a few blanks on how to actually implement some of what I need to do. I have checked various online resources but they all are specific to what they are doing and I can’t easily understand them to apply them in to the context of my own project, which is why I wanted to ask here. I’m sure my initial question will inevitably branch out to sub questions but here we go:

For my website I have created a custom post type called ‘projects’. I have successfully set this up.

Read More

Then for each project I need to allow the following data to be entered:

Project Title
Project Description

Also post meta data that will display as a list on each project page (I’ll need to display both the key and value on the page but only for those fields that contain data ‘i.e. I don’t want the list to show as Location: blank’):

Client Name:
Location:
Project Value:
Architect:
Engineer:
Site Area:

My main question is this, I need to show images for each project and allow the user to select a ‘template’ for each project post, this is because there are about 5 grid designs for layout of the images (1 main Image, 1 square image with two small images right side, 3 portrait image cols etc).

I thought the correct way would be to create a custom post type called projects, add write panels to allow easy input of data (I’ve yet to add image uploads as this will need to vary depending on the template selected and number of images required), at data input stage the user selects the preferred image layout/template and then uploads images for the containers that allow images (I’ll need to id each image upload to position it in the template with CSS, that was the plan).

Firstly, am I approaching this correctly? And secondly, how can I add functionality to the write panel I have created to allow users to a) select a ‘Template’ (bit like you can with pages but for my custom post type) and b) to add image upload fields which change depending on the template selected?

Finally, I would like to stay away from using plug-ins and try and achieve this myself through functions.php etc. This is to avoid problems later as plugins update or lose support etc.

Any help is appreciated, thank you.

Related posts

Leave a Reply

1 comment

  1. This sort of question seems to come up a lot in regards to WordPress (I answered essentially the same question the other day). I know you want to avoid plugins but this sounds like a job for Advanced Custom Fields.

    You can create exactly the fields you need for your custom post type (including an image upload field), and then add them into the template the corresponds with your custom post type.

    ACF does have a ‘lite mode‘ which can be included directly in a theme. This way you needn’t worry about updates nuking site functionality. Believe me you will save yourself a lot of time and energy this way.

    It’s admirable to try and do it with pure WP, but it’s a maturing platform, it just doesn’t lend itself to this sort of customization easily.