On This Page: [hide]
Put a Query Loop block on a WordPress page, leave it on its first setting, and the editor shows your latest posts. Publish it, and visitors see one item: the page itself. That trap catches people because the preview looks right. Below are the three ways to show posts on a page that work in current WordPress, plus how to get the page into your menu.
Quick answer: for a normal blog page, use WordPress’s own setting:
- Publish your posts and give each one a category.
- Go to Pages, then Add Page, and publish an empty page called “Blog”.
- Go to Settings, then Reading. Pick “A static page”, set Homepage to your home page and Posts page to “Blog”.
- Click Save Changes.
- Add the Blog page to your navigation (Appearance, then Editor, then Navigation in a block theme; Appearance, then Menus in a classic theme).
Want posts inside a page that already has other content? Add a Latest Posts block (simple list) or a Query Loop block set to “Custom” (filters and page numbers).
These steps were tested in WordPress 7.1.3 using WordPress Playground on 9 October 2026.
Which Method Do You Need?
Each method solves a different problem. Pick by what the page has to do, not by which one sounds newest.
| Method | Use it for | Page numbers | Filter by category | Other content on the page |
|---|---|---|---|---|
| Posts page (Settings, then Reading) | The site’s main blog | Yes | No | No, the page’s own text is hidden |
| Latest Posts block | A short “recent posts” list | No | Yes | Yes |
| Query Loop block (Custom) | A filtered list, such as one category | Yes | Yes, plus tags, authors, keywords | Yes |
Your theme type matters for one step only: the menu. Look under Appearance in your dashboard. If you see “Editor” and no “Menus”, you have a block theme. If “Menus” is there, it’s a classic theme. Our guide to switching between classic and block themes covers what else changes when you move from one to the other.
Before You Start: Publish Posts With Categories
A page can only list posts that exist and are published. Drafts and scheduled posts don’t appear in any of the three methods. So write a few posts first, and give each one a category now. It costs ten seconds per post, and it’s the only way to show one topic per page later.
In WordPress 7.1.3 the menu item is Posts, then Add Post. Older tutorials say “Add New”, which is the same screen. Type a title, write the content, then open the Post tab in the right sidebar. Tick a box under Categories, or click Add Category to create one. Click Publish, and WordPress shows a final check panel before the post goes live.

Tick a category in the Post tab before you click Publish. WordPress 7.1.3, tested in WordPress Playground, 9 October 2026.
New to WordPress altogether? Our guide to starting a WordPress blog walks through hosting, installation and the first post before you get to this step.
Method 1: Make a Blog Page Under Settings, Then Reading
This is the right choice for most sites. WordPress builds the post list for you, adds page numbers, and gives the list its own address, such as yoursite.com/blog/.
- Go to Pages, then Add Page. Title it “Home” and publish it.
- Do the same again for a page titled “Blog”. Leave both pages empty.
- Go to Settings, then Reading.
- Under “Your homepage displays”, choose “A static page (select below)”.
- Set Homepage to “Home” and Posts page to “Blog”.
- Set how many posts appear per page, then click Save Changes.

The post count field now reads “Number of recent posts shown on archive pages”. WordPress 7.1.3, tested in WordPress Playground, 9 October 2026.
The post count field has a new name. WordPress 7.1, released on 19 August 2026, renamed the Reading setting “Blog pages show at most” to “Number of recent posts shown on archive pages”. Guides written before that still point to the old label, so don’t go hunting for it. It’s the same setting, and it still starts at 10.
We set it to 5 in Twenty Twenty-Five (the theme a new WordPress 7.1 install uses). The Blog page then showed five posts, with “1 2” and “Next Page” links underneath. In Twenty Twenty-One, a classic theme, the same setting gave five posts and an “Older posts” link. So the setting works in both theme types.
One thing to avoid: picking the same page for both Homepage and Posts page. WordPress 7.1.3 still lets you save that. It shows “Warning: these pages should not be the same!” only after saving. In our test, the homepage then printed every post in full, each with its own comment form underneath.
Why Text on Your Blog Page Never Appears
Here’s the part that confuses people. Once a page becomes the Posts page, its own content stops showing on the site. You can still open it in the editor and type, and WordPress saves it. Visitors just never see it.
We tested this by adding a paragraph to the Blog page and saving. The editor kept it, and the page’s stored content contained it. The live /blog/ address showed only the post list. The editor does warn you, in a yellow bar across the top: “You are currently editing the page that shows your latest posts.”

This paragraph saves, but the live Blog page never shows it. WordPress 7.1.3, tested in WordPress Playground, 9 October 2026.
Why does this happen? In Twenty Twenty-Five, the Blog page uses a template called Blog Home. That template holds a heading and a post list, and nothing that prints the page’s own text. Need an intro paragraph above your posts? Use Method 3 on a normal page instead, or edit the Blog Home template in the Site Editor (Appearance, then Editor, then Templates).
Add the Blog Page to Navigation in a Block Theme
If your theme is a block theme, the old advice to use Appearance, then Menus fails. In Twenty Twenty-Five that screen doesn’t appear in the menu at all. Open its address directly and WordPress says: “Your theme does not support navigation menus or widgets.”
You may not need to do anything. Twenty Twenty-Five’s header starts with a Page List block, which lists every published page automatically. Our new Blog page showed up in the header with no extra work. So did Home and Sample Page, which is usually not what you want.
To pick exactly which pages appear:
- Go to Appearance, then Editor, then Navigation, to see what the menu holds.
- To edit it, go back one step and open Patterns. Under template parts, click Header, then the design called “Header”.
- Click the menu in the header. The right sidebar lists its contents; click “Page List”.
- In the right sidebar, click Edit. Each page becomes its own link.
- Use the three-dot menu next to any link to remove it, move it or add a submenu.
- Click Save. WordPress saves the menu itself, separately from the header design.

Clicking Edit turns the automatic page list into separate links. WordPress 7.1.3, tested in WordPress Playground, 9 October 2026.
Read the sidebar text before you click Edit. It says editing the list lets you add, delete or reorder pages, “however, new pages will no longer be added automatically.” We checked: after converting the list and removing Home, we published a new Contact page. It did not appear in the header. From that point on, each new page needs adding by hand.
Add the Blog Page to a Menu in a Classic Theme
Classic themes keep the familiar menu screen. We tested it in Twenty Twenty-One, which still offers Appearance, then Menus in WordPress 7.1.3.
- Go to Appearance, then Menus.
- No menu yet? Type a Menu Name, such as “Main menu”, and click Create Menu.
- In the Pages box on the left, click the View All tab.
- Tick “Blog”, then click Add to Menu.
- Under Menu Settings, tick the location your theme uses for the header (Twenty Twenty-One calls it “Primary menu”).
- Click Save Menu.

The Blog page sits under View All, not Most Recent. Twenty Twenty-One theme, WordPress 7.1.3, tested in WordPress Playground, 9 October 2026.
Step 3 matters. On our test site, the default “Most Recent” tab listed four pages but not Blog. Blog only appeared under View All, labelled “Posts Page”, and Home appeared there labelled “Front Page”. The same screen has a box called “Automatically add new top-level pages to this menu”. Leave it unticked unless you want every new page in the header.
Method 2: The Latest Posts Block
Use this when a page already has its own content and you want a short list of recent posts on it. Think of a “From the blog” strip under your services, or a recipe list on a Recipes page.
- Open the page and click the blue + button (the block inserter) at the top left.
- Search for “Latest Posts” and click it.
- In the right sidebar, under Sorting and filtering, type a category name into Categories.
- Set Number of items. It starts at 5 posts and accepts 1 to 100.
- Turn on the post date, author name, post content or featured image if you want them.
- Publish or update the page.

Categories and Number of items sit under Sorting and filtering. WordPress 7.1.3, tested in WordPress Playground, 9 October 2026.
Our test page, filtered to the Recipes category, showed exactly the three Recipes posts with their dates. The block toolbar also switches between a list and a grid. The limit: no page numbers. The sidebar has no pagination setting, so readers only ever see the newest few posts. That’s fine for a teaser. For a full archive of one topic, use the Query Loop.
Method 3: The Query Loop Block
The Query Loop is the flexible option. It filters by category, tag, author or keyword, splits long lists into pages, and lets you design how each post looks. It’s how you build a “News” page that shows only News posts, with page numbers, on a page that also has your own intro text.
- Open the page and add a Query Loop block from the inserter.
- Choose “Start blank”, then a layout such as “Title, Date, & Excerpt”. “Choose” offers ready-made designs instead.
- WordPress leaves the Query Loop selected, with its settings in the right sidebar. Set Query type to Custom. This is the step most guides skip.
- Set Items per page.
- Next to Filters, open the three-dot menu and turn on Taxonomies (categories and tags). Pick your category under Categories.
- Publish or update the page.

Custom unlocks post type, order, items per page and filters. WordPress 7.1.3, tested in WordPress Playground, 9 October 2026.
The “Title, Date, & Excerpt” layout already includes page numbers and a “no results” message. We set 2 items per page with four News posts. The page showed two posts and “1 2 Next Page”; page two sat at an address ending in ?query-3-page=2. Filters also offers Authors, Keyword and Formats, and Display hides two more settings: Offset (skip the newest few posts) and Max pages to show.
Taxonomies also adds “Exclude: Categories” and “Exclude: Tags” fields, for leaving one topic out of the list. The Latest Posts block has no exclude field at all.
The Query Loop Setting That Shows the Wrong Thing
A new Query Loop starts on Query type “Default”. Default means “use whatever the current template is already showing”. On an archive template that’s a list of posts. On a single page, it’s that page.
We published a page with the Query Loop left on Default. In the editor, it previewed our newest posts. On the live site, the loop showed one item: the page’s own title and date. No posts at all. If your “News” page shows its own name where the posts should be, this is why.

On a page, Default lists the page itself. Switch to Custom. WordPress 7.1.3, tested in WordPress Playground, 9 October 2026.
WordPress does warn you, but only in the sidebar once the block is selected. The warning reads: “Cannot inherit the current template query when placed inside the singular content (e.g., post, page, 404, blank).” Every filter stays hidden until you switch to Custom. So the rule is simple. On a page, always switch to Custom.
If You Use Divi or BeTheme
Both are paid themes, so we couldn’t install them in our test. Here’s what their own documentation says.
Divi: Elegant Themes’ help article on the Divi 5 Blog module, dated 8 June 2026, describes it like this. In the Visual Builder, insert a Row, click the grey plus inside it, and pick the Blog module. Its Content tab is where you choose which post categories feed the list.
BeTheme: Muffin Group’s own documentation on blog creation uses the core method from Method 1. You create a page, then assign it under Settings, then Reading. It adds a firm rule: leave that main blog page untouched, with no content, items or shortcodes. That matches what we saw in WordPress itself, since the Posts page hides its own content anyway.
Posts Still Not Showing? Check These
Work down this list in order. The first items cause most of the problems.
- Unpublished post: drafts, pending posts and scheduled posts are left out of every list. Check Posts, then All Posts, for the status.
- Query Loop on Default: switch Query type to Custom, as above.
- Filter too narrow: a category on Latest Posts or a Query Loop hides everything outside it. Clear the field and see if posts return.
- Same page in both slots: open Settings, then Reading, and give them different pages.
- Low post count: the Reading setting starts at 10, Latest Posts at 5, and the Query Loop at whatever you set.
- Old cached copy: caching plugins and hosting caches can hold the old page. Clear the cache, then reload in a private window.
Frequently Asked Questions
Why does my blog page only show 10 posts?
Ten is the default in Settings, then Reading. In WordPress 7.1 and later the field is called “Number of recent posts shown on archive pages”. Raise it there, or keep it at 10 and let page numbers handle the rest. The Latest Posts block has its own count, which starts at 5.
Can I show posts from only one category on a page?
Yes, and you don’t need a plugin. The Latest Posts block has a Categories field for a short list. The Query Loop block, set to Custom with the Taxonomies filter on, does the same with page numbers. The Posts page from Settings, then Reading can’t filter by category.
Do I need a paid theme like Divi to add posts to a page?
No. The Latest Posts and Query Loop blocks come with WordPress, and both worked in the free Twenty Twenty-Five theme. Divi’s Blog module does the same job inside Divi layouts. Buy Divi for its builder, not for this feature.
Should I install a plugin like WP Show Posts instead?
Probably not in 2026. Its WordPress.org listing shows the last update on 16 April 2024, and it’s marked as tested only up to WordPress 6.1. The Query Loop block covers the same ground (category filters, page numbers, custom layouts) and is maintained with WordPress itself.
Where to Go Next
For most sites, the answer is Method 1 plus a menu link. Use Latest Posts for a short teaser, and the Query Loop (set to Custom) for any page that needs one topic with page numbers. Want to try all three without touching your live site? Our guide to running WordPress without a domain covers WordPress Playground, the free in-browser copy of WordPress we used for these tests.
