I must be doing something wrong here.
I setup my site with a static front page using front-page.php. I created a page in the admin with a title and chose the front-page.php in the template dropdown.
My title shows up fine, however the_content(); does not.
I’m not doing anything special as shown below.
<?php
/*
Template Name: Homepage
*/ ?>
<?php get_header(); ?>
<div class="content">
<div class="welcome_area">
<div class="welcome_area_title"><?php the_title('');?></div>
<div class="welcome_area_text">
<?php the_content(); ?>
</div>
Any ideas why the content won’t show?
You don’t really have a Loop.
What is happening is:
have_posts()
to check that you have post content. You can use anelse
clause to provide default content if you want.while(have_posts())
the_post()
to setup the$post
variable and also to increment the loop counter. Try that withoutthe_post()
an you get an infinite loop. This is the most critical part that was missing from your code.the_post()
has run, your post template tags should work as expected.I didn’t edit your code too radically but I’d bring that
the_title
into the Loop as well, even if it seems to be working. It really should be inside the Loop and it does not always work as expected outside of it.Reference
https://codex.wordpress.org/Class_Reference/WP_Query#Methods
Well first of all, if you set your page as the static front page, you don’t need to associate the template with the page, and the template doesn’t need a header. WordPress automatically uses the
front-page.php
template for a static front page, as per the template hierarchy.To answer your question though, you need to call
the_post()
first to set up the global vars thatthe_content()
function relies on.