• I am turning a previously built HTML/CSS site into a wordpress theme. It has 3 simple pages with no blog. I am using front-page.php to handle the landing page. I am struggling with the best practice for my portfolio page and contact page.

    Currently I have created 2 new pages via the dashboard and just copied in custom html for each of the 2 pages. These are using page.php. The site works perfectly. However, I have a feeling this isn’t the best practice and as I am teaching myself theme development I would like to learn the right ways to accomplish this for my site.

    I would greatly appreciate any advice on the best way to proceed.

    Thank you

    • This topic was modified 5 years, 1 month ago by Jan Dembowski. Reason: Moved to Fixing WordPress, this is not a Developing with WordPress topic
Viewing 11 replies - 1 through 11 (of 11 total)
  • This might help you understand some of what you really need to do…

    https://developer.www.ads-software.com/themes/advanced-topics/child-themes/

    For the rest, I’m just going to tell you what I do…

    There are parts of every website that should be somewhat static in nature. Where you can, stuff that as code into your theme’s header and footer files.

    Stuff the rest into the body of a new ‘page’ itself. I’m a little worried that WordPress will be upset with the changes to pages.php when you try to create the new page. You may need to reinstall the theme or maybe even WordPress itself depending on what you might have clobbered but that’s all part of learning this stuff.

    Somewhere in this process, you’ll need to save your theme changes before a theme update comes along and clobbers your changes.

    You’ll attend to this by creating a Child Theme… This little plugin will make the child theme creation process simple for you.

    https://www.ads-software.com/plugins/child-theme-configurator/

    When you’re done creating the Child theme you’ll move the modified header and footer files to the Child Directory.

    From here on you’ll make theme changes to files in your Child Theme. If those files are not in the Child Theme then you’ll copy that file over from the parent theme.

    This might be a little backward from what others might teach but it’s how I learned (as I broke things <GRIN>) and I liked the fact that when I got things right I saw the results quickly.

    I hope this helps! If not read someone else’s take on the same subject. Do a search on Google with your question. My Goto sites are WPMUDev and WPBeginner!

    Themes don’t build pages. So your solution is actually the best one. The content should reside in the database (including whatever HTML the user wants), and all the theme does is display that content with the theme’s design.
    The user should be able to see the content regardless of the theme used (so you might want to rethink the front-page.php thing).

    See the template hierarchy: https://developer.www.ads-software.com/themes/basics/template-hierarchy/
    (and the rest of the Theme Developer Handbook while you are there).

    Thread Starter tkmets5

    (@tkmets5)

    @jnashhawkins i don’t think I broke anything yet. It’s completely custom following along with a really good tutorial. Some of the php file structures came from underscores. So I don’t think I need a child theme here as I started from scratch. Thanks for your help!

    Thread Starter tkmets5

    (@tkmets5)

    @joyously thanks for your reply! So adding pages via the dashboard and adding the html via custom html blocks is an acceptable way to build out? I can also do the same for the home page and eliminate front-page.php.

    I’m on the cusp of understanding all of this and really appreciate your reply.

    If it’s content HTML, it belongs in the content (put in with the editor) so it’s in the database. (any theme can display it)
    If it’s header or footer or sidebar stuff, that’s the theme’s job.
    If it’s something dynamic (lists or contact or lookup or translation, etc.) that’s the plugin’s job.

    Themes should just display existing content, and they can be switched at any time. There are even plugins to switch themes for different pages, or let the user choose at the front end. The theme should not affect what shows, only how it looks.

    Just keep in mind what I’ve tossed into here for later… that is how I’ve done HTML pages as well as HTML snippets into WordPress.

    Thread Starter tkmets5

    (@tkmets5)

    @joyously Thanks for that. That’s clicking for me the way you described it. Wasn’t thinking about the switching themes part.

    Thread Starter tkmets5

    (@tkmets5)

    @joyously I have a quick question I’m stumped on in regards to my home page. As you suggested I should get the content of front-page into the editor. I have registered a sidebar for a widget area in the middle of my front-page.php file and it’s working perfectly now…. I’m guessing I need to set up a new page template to handle this home page. If I’m right, how do I handle the widget area? I’m sure I’m not asking this clearly but I’m stumped. Any suggestions would be greatly appreciated. Thank you

    Yes, the question isn’t clear.
    A template file called front-page.php has to be written to handle both options of WP: a static page or a list of posts, because if it exists, it is used. This means that if it exists, the user cannot use a page template selected in the editor. (they can select one but it is ignored because front-page.php exists)

    So if you want a widget area to be in the middle of the content that the user enters, you have to figure a way for the theme to break the content in half somehow. Or just put the widget area above or below (maybe have an option) the page content. As a user, I might expect to see this in the posts list also, if I chose that for Home.

    Thread Starter tkmets5

    (@tkmets5)

    Sorry….I was trying to say I am wanting to eliminate the front-page.php altogether. So I would create a new page via the editor for example and set it as home via settings>reading. I would like to create a new page template to assign to the new home page. I have a widget area to be placed in the middle of the page. I understand I should place as much of the content inside the page via the editor. But confused as to best way to get that widget area where it needs to be.

    Thread Starter tkmets5

    (@tkmets5)

    I think I probably actually trying to make something a widget area that maybe shouldn’t.

Viewing 11 replies - 1 through 11 (of 11 total)
  • The topic ‘Best practice for adding additional pages when building a custom theme’ is closed to new replies.