When first setting up a WordPress site and publishing a few posts, it isn’t immediately obvious where they should appear. Latest articles might clutter the homepage, or a page deliberately created and titled “Blog” shows no posts at all. This trips up almost everyone building their first WordPress site.
WordPress treats pages and posts differently by default — posts are blog content (articles, updates, guides), pages are static (About, Contact, Services). Getting posts onto a dedicated blog page means creating that page and telling WordPress to use it. The difference between pages and posts is worth understanding first if the distinction isn’t already clear.
Two Different Setups, Depending on the Theme
Worth checking which kind of theme is actually running before following either set of steps, since they genuinely differ. On a classic theme (older, PHP-template-based), the process below via Settings → Reading is exactly right. On a block theme — most current default WordPress themes since Twenty Twenty-Three — the blog archive is handled differently: it’s its own editable template inside Appearance → Editor → Templates, typically called “Blog Home” or “Index,” built from blocks like the Query Loop rather than a blank page assigned through Reading settings. The Settings → Reading “Posts page” dropdown still exists and still works on a block theme too, but the actual layout and design of that page is controlled through the Site Editor’s template, not through page content — a real point of confusion for anyone following classic-theme instructions on a modern block theme and wondering why editing the “Blog” page itself doesn’t visibly change anything.
The Classic-Theme Setup
Go to Pages → Add New, title it “Blog” (or “Articles,” “News,” “Journal” — whatever fits the site’s tone), and leave the body completely empty; WordPress fills this page automatically with posts, and any manually added content either gets hidden or breaks the layout. Publish it — the URL slug usually sets automatically from the title (/blog/).
Under Settings → Reading, set Your homepage displays to A static page. The first dropdown, Homepage, is whichever page visitors should land on first; the second, Posts page, is the blank “Blog” page just created — WordPress uses it as the container for every published post. Save, then visit the blog URL to confirm posts actually appear (drafts won’t show — at least one post needs to be genuinely published), and check the homepage separately shows the static page content rather than a post feed. If it still shows posts, the Homepage dropdown likely got left at “— Select —” rather than an actual page.
Getting It Right Either Way
Name the page something readers understand at a glance — “Blog” is universally understood, “Insights” or “Resources” work too, just stay consistent with how it’s labeled in the navigation menu. WordPress won’t add the page to navigation automatically; go to Appearance → Menus (or the equivalent Navigation block area on a block theme) and add it manually. Never add content to the assigned posts page itself on a classic theme — WordPress ignores or conflicts with anything placed there, and it needs to stay blank. Showing only one category on the blog page needs a plugin or custom query on either theme type; the default posts page or Query Loop block shows everything regardless of category out of the box.
The most common real mistakes: adding content to the posts page (managed entirely by WordPress — manual content won’t show, or breaks the layout depending on the theme); setting a Posts page without also assigning a Homepage, which leaves WordPress behaving unpredictably; trying to select the blog page before it’s actually published, since draft pages don’t appear in the Posts page dropdown at all; and doing the backend work but forgetting to update the navigation menu, leaving visitors with no way to actually find the page that was just set up.
Page builders like Elementor, Divi, or Beaver Builder generally still use the same Settings → Reading approach as classic themes, though some offer a custom blog archive template with more layout control than the theme’s default output. For displaying posts from a specific category on one page and everything on another, a plugin with custom loop queries — or a developer working directly in code (or the Query Loop block’s own filtering on a block theme) — handles it; the standard setup above is genuinely enough for most new sites. Once the blog itself is live, setting up comments and spam protection is a sensible next step for how readers actually interact with what gets published.

Etienne Basson works with website systems, SEO-driven site architecture, and technical implementation. He writes practical guides on building, structuring, and optimizing websites for long-term growth.