Skip to content
QualityWordPress

How to Add a Facebook Feed to WordPress (3 Ways)

Add a Facebook feed to WordPress three ways: the official Page Plugin embed, a feed plugin like Smash Balloon, or single post embeds — plus GDPR tips.

QualityWordPress 11 min read
Two developers pairing at a desktop monitor and laptop

A Facebook feed on your WordPress site does two jobs at once: it keeps your pages looking active even when you haven’t published a new blog post, and it puts your Facebook presence in front of visitors who found you through search instead of social. Instead of asking people to leave your site to see what you’re up to, the feed brings that activity to them.

There are three practical ways to add a Facebook feed to WordPress: Facebook’s own Page Plugin embed code, a dedicated feed plugin, and embedding individual posts one at a time. Each has a different balance of effort, styling control, and reliability — and Facebook’s history of changing its embed rules means the “easy” options come with caveats worth understanding before you commit. This guide walks through all three, then covers the two topics most tutorials skip: what a Facebook feed means for GDPR compliance, and how to keep it from slowing your site down.

Which Method Should You Use?

A quick decision guide before the steps:

  • Facebook’s official Page Plugin — best if you want a free, five-minute embed and don’t mind that it looks like Facebook, not like your site. Ad blockers and consent tools can prevent it from loading.
  • A feed plugin like Smash Balloon — best for most sites. The feed matches your theme, is served from your own server (so ad blockers don’t hide it), and caches content for performance. The free tier covers a basic timeline; layouts like grids and carousels are paid.
  • Individual post embeds — best when you want to feature one or two specific posts inside an article, not a running feed. Since Facebook removed open oEmbed support in 2020, this now requires a plugin or a Facebook app rather than just pasting a URL.

One scope note: everything below applies to Facebook Pages. Feeds from Facebook Groups are a different story — Facebook has restricted API access to group content over the years, and at the time of writing, most plugins either can’t display group posts at all or support them only in limited, workaround-based ways. If your community lives in a group, check a plugin’s current group support explicitly before buying; don’t assume it works like a Page feed.

Method 1: Facebook’s Official Page Plugin (Free Embed Code)

Facebook provides an official embed widget called the Page Plugin that displays your Page’s timeline in an iframe. It’s free, requires no WordPress plugin, and takes a few minutes.

Step 1: Generate the embed code

Go to the Page Plugin page on Facebook for Developers. Enter your Facebook Page URL, choose which tabs to show (timeline, events, messages), and set the width and height. The preview updates as you adjust settings.

Step 2: Copy the iframe code

Click Get Code and switch to the iframe tab. The iframe version is the simplest to use in WordPress — the JavaScript SDK version works too but adds setup steps with no real benefit for a basic embed.

Step 3: Paste it into WordPress

Open the page or post where the feed should appear, add a Custom HTML block, and paste the iframe code. For a sidebar placement, add the same Custom HTML block to a widget area under Appearance → Widgets. Preview the page to confirm the feed renders.

The limitations

The Page Plugin is genuinely free, but you get what you pay for:

  • Almost no styling control. The feed looks like a slice of Facebook dropped into your page — Facebook’s fonts, Facebook’s colors, Facebook’s layout. You can set dimensions and toggle a few options, and that’s it.
  • Ad blockers and consent tools often block it. The widget loads directly from Facebook’s servers, and many ad blockers and privacy browsers block Facebook domains on third-party sites. Cookie consent plugins configured correctly for the EU will also hold the iframe back until the visitor accepts — meaning a meaningful share of your visitors may see an empty box where the feed should be.
  • Fixed width behavior. The plugin has a maximum width of 500 pixels at the time of writing and doesn’t reflow responsively the way a native part of your theme would.
  • It can change or break without notice. Facebook has retired embed widgets and changed their behavior before. There is nothing you can do about it except switch methods when it happens.

Use this method for a quick sidebar widget on a site where design polish isn’t critical. For anything visitor-facing on a business site, Method 2 is the better tool.

A dedicated Facebook feed plugin WordPress users consistently rate highest is Smash Balloon’s Custom Facebook Feed (listed as “Social Post Feed” in the plugin directory). It’s the example we’ll walk through, but the workflow is nearly identical in alternatives like WP Social Ninja and Feed Them Social — we compare all three in our roundup of the best social media feed plugins for WordPress.

The fundamental difference from Method 1: the plugin fetches your Facebook content through the API, stores it on your own server, and renders it as part of your page in your theme’s styling. Ad blockers don’t hide it, it inherits your fonts and colors, and it stays visible regardless of what happens to Facebook’s widget offerings.

Step 1: Install the plugin

Go to Plugins → Add New Plugin, search for “Custom Facebook Feed”, click Install Now, then Activate.

Step 2: Connect your Facebook Page

Open the new Facebook Feed menu item and click Add New. The plugin walks you through an OAuth connection: you log into Facebook, choose which Page to connect, and grant read access. You need to be an admin of the Page you’re connecting. No manual app creation or access token copying is required — the plugin handles the API credentials.

Step 3: Create and customize the feed

Once connected, the feed builder shows a live preview. In the free version you get a timeline layout with control over the header, post count, and colors. The Pro version adds grid, masonry, and carousel layouts, photo and video feeds, event feeds, and a lightbox — the free tier is enough to evaluate whether a feed earns its place on your site before paying for layouts. Our full Smash Balloon review breaks down exactly where the free/Pro line sits at the time of writing.

Step 4: Embed the feed

Click Embed, and either add the Custom Facebook Feed block to any page or copy the shortcode ([custom-facebook-feed]) for use in widgets or page builders. The same feed can appear in multiple places, and updating the feed settings updates every instance.

Smash Balloon uses the same connect-customize-embed pattern across its whole family of plugins, so if you later want an Instagram feed alongside the Facebook one, the setup will feel familiar — see our guide to the best Instagram feed plugins for how the Instagram side compares.

Method 3: Embed Individual Facebook Posts

Sometimes you don’t want a running feed — you want one specific post embedded in an article, the way news sites quote a Facebook announcement.

This used to be trivial: paste the post’s URL on its own line in the editor and WordPress’s oEmbed support turned it into a rendered embed. That no longer works. In October 2020, Facebook removed open oEmbed support for Facebook and Instagram content, and WordPress removed both platforms from its built-in embed list. Pasting a Facebook post URL into the editor today produces a plain link, not an embed.

At the time of writing, you have two options:

  1. Use Facebook’s manual embed code. On any public post, click the three-dot menu and choose Embed (on some post types it’s under “More options”). Facebook generates an iframe snippet you paste into a Custom HTML block. This works without any plugin, but it’s a per-post manual process and carries the same ad-blocker and consent caveats as Method 1.
  2. Use a plugin that restores oEmbed. Smash Balloon’s feed plugins include an oEmbed feature that routes embed requests through their registered Facebook app, restoring the old paste-a-URL behavior in the editor. If you installed a feed plugin in Method 2, check its settings for an “oEmbeds” toggle — you may already have this working.

For a site that occasionally quotes Facebook posts, the manual embed code is fine. If embedding social posts is part of your regular publishing workflow, the plugin route saves time and keeps old embeds rendering.

Any method that loads content directly from Facebook’s servers — the Page Plugin iframe and manual post embeds — causes the visitor’s browser to contact Facebook, which can set cookies and transmit the visitor’s IP address before they’ve agreed to anything. Under GDPR and the ePrivacy rules, that generally requires prior consent for EU visitors.

Practical implications:

  • If you use Method 1 or manual embeds, configure your cookie consent plugin to block the Facebook iframe until the visitor accepts marketing/third-party cookies. Most major consent plugins (Complianz, CookieYes, Borlabs in the German market) can do this, usually by showing a placeholder with an “accept to view” prompt where the feed would be.
  • A feed plugin changes the picture significantly. Because Smash Balloon and similar plugins serve cached content and locally stored images from your own server, the default feed can display without the visitor’s browser ever contacting Facebook. Smash Balloon includes an explicit GDPR setting that keeps everything local. This is one of the strongest practical arguments for Method 2 on any site with EU traffic: the feed shows for everyone, consent banner or not.
  • None of this is legal advice. Consent requirements depend on your configuration and jurisdiction — if compliance matters to your business, confirm your setup with someone qualified.

Performance: Cache the Feed, Don’t Fetch It Live

A naive Facebook integration hurts your page speed twice: external requests to Facebook’s servers on every page load, and Facebook’s own scripts and images weighing down your page. Two habits prevent this:

  • Let the plugin cache. Feed plugins fetch new posts on a schedule (every 30–60 minutes is a common default) and serve the stored copy in between. Resist the urge to crank the refresh interval down — nobody needs your website’s Facebook feed to update within seconds of a post going live.
  • Limit and lazy-load. Show 3–6 posts, not 20, and if the feed sits below the fold, make sure images are lazy-loaded (WordPress does this natively for most images; Smash Balloon lazy-loads feed images as well).

A cached, locally served feed of a few posts adds very little to page weight. A live iframe pulling Facebook’s full widget stack is the version that shows up as a red flag in speed tests.

Conclusion

To add a Facebook feed to WordPress, the plugin route is the strongest default: Smash Balloon’s free Custom Facebook Feed gives you a themed, cached, ad-blocker-proof timeline in about ten minutes, with WP Social Ninja and Feed Them Social as capable alternatives. Facebook’s own Page Plugin remains the fastest free option for a low-stakes sidebar widget, and individual post embeds handle the “quote this one announcement” case — just remember that the paste-a-URL oEmbed days are over and plan accordingly.

A Facebook feed is also just one piece of a larger integration. For the full picture — profile icons, Open Graph tags, sharing buttons, and auto-posting — see our guide to connecting social media to WordPress, and browse our comparison of the best social media plugins for WordPress to round out the toolkit.

FAQ

Can I add a Facebook feed to WordPress for free?

Yes, two ways. Facebook’s official Page Plugin generates a free iframe embed you paste into a Custom HTML block — no plugin needed, but styling is fixed and ad blockers may hide it. Alternatively, Smash Balloon’s Custom Facebook Feed has a free version that displays a customizable timeline feed served from your own site.

Why doesn’t pasting a Facebook URL into WordPress work anymore?

Facebook removed open oEmbed support in October 2020, and WordPress dropped Facebook and Instagram from its embed list in response. Pasting a post URL now produces a plain link. To embed individual posts today, use Facebook’s manual embed code from the post’s three-dot menu, or a plugin (like Smash Balloon) that routes oEmbed requests through its registered Facebook app.

Can I display a Facebook Group feed on my WordPress site?

Usually not reliably. Facebook has progressively restricted API access to group content, and at the time of writing most feed plugins either don’t support groups or support them with significant limitations. If a group feed is essential, verify a plugin’s current group support on its official documentation before purchasing — this is an area where old tutorials are frequently out of date.

Is embedding a Facebook feed GDPR compliant?

It depends on the method. Facebook’s iframe embeds contact Facebook’s servers directly and can set cookies, so EU visitors generally need to consent before the embed loads — your cookie consent plugin should block it until then. Feed plugins that cache content and images on your own server can display the feed without any request to Facebook, which is the more privacy-friendly setup for EU traffic.

Will a Facebook feed slow down my WordPress site?

A cached plugin feed showing a handful of posts adds very little load time, since content is served from your own server and images are lazy-loaded. The direct iframe embed is heavier — it pulls Facebook’s scripts and assets on every page load. Whichever method you use, limit the feed to a few posts and keep it out of the critical above-the-fold area if speed is a priority.

Related articles

Never miss a free theme

Get new free themes and practical WordPress guides in your inbox.