There is a right way and a wrong way to do WordPress!
I admit that I am fairly new to the WordPress world, though have been doing websites for years. From working on several very large costly projects I have learned a few lessons and I want to share these so that you can avoid wasting money.
Avoid custom themes
Many web developers are crazy about creating something new, but don’t let them do it on your dime. A good WordPress theme takes many hours of development and testing. It also requires a constant update to keep up with the WordPress core and security issues. So to have a theme written just for your site is a big undertaking and a commitment to longer-term updating. There are so many well develop themes out there that are thoroughly supported. Some themes are free and others cost very little when compared to writing one from scratch. Unless there is a very good reason for not to using public a theme don’t let your developer avoid them. I recommend you asking which theme your developer is planning on using and then checking it out for yourself. Look at the reviews for the theme and see how well is it is supported.
I personally love the “Vantage” theme from SiteOrigin. It is a well-developed theme that can be modified in almost unlimited ways and it is free. Though I highly recommend upgrading to their premium version as it is inexpensive and it helps to ensure the theme is supported into the future.
Child Themes if necessary
Word press has a wonderful feature called child themes. What a child theme does, is allow you to modify certain parts of the theme while maintaining the theme’s core. It is important because the parent theme can be updated without destroying your child theme. What this comes to is a developer can modify a theme to do a function that the parent theme is not capable of doing without writing a whole theme from scratch.
CSS is all you need
Many good themes are very customizable using WordPress’s customize function. When you have done all you can with the customizer you can do the rest with CSS. Don’t, however, add new styles to the theme’s style sheet, use a CSS plugin. It allows you to create a new CSS and it remains even after the theme has been updated.
Plugins to the rescue
WordPress has the ability to add plugins. Plugins extend the capabilities of WordPress. Many times theme developers create functions within the theme that should be reserved for plugins. Themes are meant to handle how the website displays its content. A theme should never take control of creating content. The reason this is important is that if at some point a website owner wishes to change their theme the information of the site is not lost because the information is dependent on the plugin, not the theme.
Before modifying a theme make sure there is no plugin available to do the needed task. Sometimes it is just better to work with an already developed plugin that to create a whole new theme or plugin.
Custom Post Types
It is my opinion that custom post types are way overused. WordPress has basically two main post types, which are pages and post. A post can be attached to categories which allow posts to be organized in different ways. It seems that many people want to create a custom post type for every type of post. Many themes have project or testimony post types. The reason they do this is to make it easy for users to input data and display it in a certain way. There is a place for this, but again if you move to a different theme these custom post may just disappear. I believe it is best to use categories for organizing post. Have a project or testimonial category if you need. Then it does not matter what theme you are using the information will remain. There are many plugins designed to display post information in different ways, but many do not work with custom post types. That is another reason not to use custom post types.
The way you display post differently is to use a plugin that will allow you to create templates for post and pages. SiteOrigin’s Page build or Elegant Theme Divi Builder are such plugins. A web developer could create a look for a certain post type like a project post and then save it as a template. Then users can use the template to create a new post with the same look. Is does not matter what theme is being used the because the layout is handled by the plugin.
Sum this up
It seems in the quest to make a WordPress site super easy to use many developers go to great lengths to create custom theme functions. In the long run, I believe it is costly. I really should be that a person using WordPress should be trained to do so. Most people have to know how to use MS Office in order to do their job and that level of training should be expected to use WordPress. It really is not all that hard to create pages and post based on templates and assign categories to their posts.
So use themes to display data and plugins to create data. Avoid custom theme & post types and use categories.