{"id":290191,"date":"2026-03-20T16:25:33","date_gmt":"2026-03-20T16:25:33","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/bluebook-feed-sync\/"},"modified":"2026-07-03T08:36:42","modified_gmt":"2026-07-03T08:36:42","slug":"bluebook-feed-sync","status":"publish","type":"plugin","link":"https:\/\/fao.wordpress.org\/plugins\/bluebook-feed-sync\/","author":23453481,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"3.13.13","stable_tag":"3.13.13","tested":"7.0","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"BlueBook Feed Sync","header_author":"SDAweb - Rune Stake Stavdal, Vinjar Romsvik, Christer Andvik","header_description":"Display a customizable social page feed on your WordPress site with multiple layouts, color schemes, header options, like box, lightbox, and more.","assets_banners_color":"1e3fb7","last_updated":"2026-07-03 08:36:42","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/sdaweb.no","rating":0,"author_block_rating":0,"active_installs":50,"downloads":1861,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"3.10.0":{"tag":"3.10.0","author":"rstake","date":"2026-04-11 23:57:13"},"3.11.0":{"tag":"3.11.0","author":"rstake","date":"2026-04-12 11:42:38"},"3.12.16":{"tag":"3.12.16","author":"rstake","date":"2026-04-12 21:32:27"},"3.12.17":{"tag":"3.12.17","author":"rstake","date":"2026-04-24 11:56:05"},"3.13.0":{"tag":"3.13.0","author":"rstake","date":"2026-04-26 12:16:19"},"3.13.1":{"tag":"3.13.1","author":"rstake","date":"2026-04-26 12:53:17"},"3.13.11":{"tag":"3.13.11","author":"rstake","date":"2026-07-02 19:31:26"},"3.13.12":{"tag":"3.13.12","author":"rstake","date":"2026-07-02 20:13:48"},"3.13.13":{"tag":"3.13.13","author":"rstake","date":"2026-07-03 08:36:42"},"3.13.2":{"tag":"3.13.2","author":"rstake","date":"2026-05-10 19:35:38"},"3.13.3":{"tag":"3.13.3","author":"rstake","date":"2026-05-20 12:43:44"},"3.13.4":{"tag":"3.13.4","author":"rstake","date":"2026-06-05 14:00:31"},"3.13.5":{"tag":"3.13.5","author":"rstake","date":"2026-06-05 14:30:32"},"3.13.8":{"tag":"3.13.8","author":"rstake","date":"2026-06-06 08:04:19"},"3.13.9":{"tag":"3.13.9","author":"rstake","date":"2026-06-10 12:18:49"},"3.9.16":{"tag":"3.9.16","author":"rstake","date":"2026-03-20 22:00:40"},"3.9.17":{"tag":"3.9.17","author":"rstake","date":"2026-03-30 10:27:07"},"3.9.18":{"tag":"3.9.18","author":"rstake","date":"2026-03-30 11:16:02"},"3.9.19":{"tag":"3.9.19","author":"rstake","date":"2026-03-30 17:26:14"},"3.9.20":{"tag":"3.9.20","author":"rstake","date":"2026-03-30 21:31:44"},"3.9.21":{"tag":"3.9.21","author":"rstake","date":"2026-04-02 09:24:39"},"3.9.22":{"tag":"3.9.22","author":"rstake","date":"2026-04-02 10:07:03"},"3.9.24":{"tag":"3.9.24","author":"rstake","date":"2026-04-02 12:56:47"},"3.9.25":{"tag":"3.9.25","author":"rstake","date":"2026-04-02 13:04:56"},"3.9.26":{"tag":"3.9.26","author":"rstake","date":"2026-04-02 14:01:17"},"3.9.27":{"tag":"3.9.27","author":"rstake","date":"2026-04-02 15:18:48"},"3.9.28":{"tag":"3.9.28","author":"rstake","date":"2026-04-02 21:23:16"},"3.9.29":{"tag":"3.9.29","author":"rstake","date":"2026-04-03 17:00:52"},"3.9.30":{"tag":"3.9.30","author":"rstake","date":"2026-04-03 21:08:08"},"3.9.31":{"tag":"3.9.31","author":"rstake","date":"2026-04-04 21:38:27"},"3.9.32":{"tag":"3.9.32","author":"rstake","date":"2026-04-11 21:06:26"},"3.9.33":{"tag":"3.9.33","author":"rstake","date":"2026-04-11 22:27:54"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3487495,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3487495,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3487495,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3487495,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"bluebook-feed-sync\/feed":{"apiVersion":3,"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","name":"bluebook-feed-sync\/feed","version":"3.13.12","title":"BlueBook Feed","category":"widgets","icon":"share","description":"Display a customizable social page feed.","textdomain":"bluebook-feed-sync","editorScript":"bbfsync-block-editor","render":"file:.\/render.php","supports":{"html":false,"align":["wide","full"],"multiple":true},"attributes":{"feedId":{"type":"integer","default":1},"layout":{"type":"string","default":"list"},"colorScheme":{"type":"string","default":"inherit"},"postsDesktop":{"type":"integer","default":9},"postsMobile":{"type":"integer","default":6},"columnsDesktop":{"type":"integer","default":3},"columnsTablet":{"type":"integer","default":2},"columnsMobile":{"type":"integer","default":1},"textClampEnabled":{"type":"boolean","default":true},"textLinesGrid":{"type":"integer","default":14}}}},"tagged_versions":["3.10.0","3.11.0","3.12.16","3.12.17","3.13.0","3.13.1","3.13.11","3.13.12","3.13.13","3.13.2","3.13.3","3.13.4","3.13.5","3.13.8","3.13.9","3.9.16","3.9.17","3.9.18","3.9.19","3.9.20","3.9.21","3.9.22","3.9.24","3.9.25","3.9.26","3.9.27","3.9.28","3.9.29","3.9.30","3.9.31","3.9.32","3.9.33"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Admin settings \u2014 Connect tab with credential masking and connection status banner","2":"Admin settings \u2014 Layout tab with visual layout picker","3":"Admin settings \u2014 Style tab with colour scheme and header options","4":"Feed display \u2014 List layout with lightbox","5":"Feed display \u2014 Carousel layout"}},"plugin_section":[],"plugin_tags":[191549,258222,2877,154,258223],"plugin_category":[],"plugin_contributors":[257114,256141],"plugin_business_model":[],"class_list":["post-290191","plugin","type-plugin","status-publish","hentry","plugin_tags-feed-widget","plugin_tags-page-feed","plugin_tags-social-feed","plugin_tags-social-media","plugin_tags-social-sync","plugin_contributors-rstake","plugin_contributors-sdaweb","plugin_committers-rstake"],"banners":{"banner":"https:\/\/ps.w.org\/bluebook-feed-sync\/assets\/banner-772x250.png?rev=3487495","banner_2x":"https:\/\/ps.w.org\/bluebook-feed-sync\/assets\/banner-1544x500.png?rev=3487495","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/bluebook-feed-sync\/assets\/icon-128x128.png?rev=3487495","icon_2x":"https:\/\/ps.w.org\/bluebook-feed-sync\/assets\/icon-256x256.png?rev=3487495","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>BlueBook Feed Sync is a professional WordPress plugin that displays your social page feed with multiple layouts, full customization, multi-feed management, and an interactive lightbox. Easy setup, fully customizable, and lightweight. Multiple layouts, interactive lightbox, video support, and multi-feed management.<\/p>\n\n<h4>Multi-Feed Manager<\/h4>\n\n<p>Create unlimited feeds, each with their own settings. Perfect for sites that need different feeds on different pages.<\/p>\n\n<ul>\n<li>Feed selector dropdown to switch between feeds<\/li>\n<li>Create, duplicate, rename, and delete feeds<\/li>\n<li>New feeds automatically inherit connection settings from the primary feed<\/li>\n<li>Per-feed shortcodes with unique ID<\/li>\n<li>Override any setting directly in the shortcode<\/li>\n<\/ul>\n\n<h4>Layouts<\/h4>\n\n<ul>\n<li><strong>List<\/strong> \u2014 Single-column vertical feed (max-width 960px)<\/li>\n<li><strong>Masonry<\/strong> \u2014 Pinterest-style multi-column grid<\/li>\n<li><strong>Carousel<\/strong> \u2014 Multi-card horizontal slider with snap-based swipe navigation, dot indicators, and arrow buttons<\/li>\n<li><strong>Boxed<\/strong> \u2014 Clean CSS Grid layout with subtle borders<\/li>\n<\/ul>\n\n<h4>Header Styles<\/h4>\n\n<p><strong>Visual Header<\/strong> with 4 layout presets: Classic, Compact, Banner, and Clean.<\/p>\n\n<p><strong>Text Header<\/strong> with Facebook icon and custom text.<\/p>\n\n<p>Both header types support custom backgrounds (theme, solid color, gradient, transparent), page name override, show bio toggle, and bio\/description override.<\/p>\n\n<h4>Lightbox<\/h4>\n\n<p>All posts open in a split-layout lightbox with full-size image or inline video, post text, author info, engagement stats, thumbnail strip for multi-photo galleries, arrow and swipe navigation, and keyboard support. Infinite scroll \u2014 when you reach the last loaded post, the next batch loads automatically so you can keep browsing without leaving the lightbox. Text-only posts display in a clean full-width layout instead of a split view.<\/p>\n\n<h4>Video Support<\/h4>\n\n<ul>\n<li><strong>YouTube<\/strong> \u2014 Auto-detected from shared links with privacy-enhanced embedding<\/li>\n<li><strong>Facebook Videos<\/strong> \u2014 Thumbnail with play button, embedded via Facebook plugin<\/li>\n<\/ul>\n\n<h4>Color System<\/h4>\n\n<p>Three built-in schemes (Inherit, Light, Dark) plus a full custom palette with 9 individually configurable colors.<\/p>\n\n<h3>Third-Party Services<\/h3>\n\n<p>This plugin connects to external services to retrieve and display social media content. No data is sent without your explicit configuration.<\/p>\n\n<h4>Facebook Graph API<\/h4>\n\n<p>Used to fetch page posts, page info (name, bio, avatar, cover photo), and to verify your access token.<\/p>\n\n<ul>\n<li>Service: Meta Platforms, Inc.<\/li>\n<li>Website: <a href=\"https:\/\/developers.facebook.com\/\">https:\/\/developers.facebook.com\/<\/a><\/li>\n<li>Terms of Service: <a href=\"https:\/\/developers.facebook.com\/terms\/\">https:\/\/developers.facebook.com\/terms\/<\/a><\/li>\n<li>Privacy Policy: <a href=\"https:\/\/www.facebook.com\/privacy\/policy\/\">https:\/\/www.facebook.com\/privacy\/policy\/<\/a><\/li>\n<\/ul>\n\n<p>Data sent: your Facebook Page ID and Page Access Token. Requests are made server-side when the feed cache expires or when you click \"Verify Connection\" in the admin panel.<\/p>\n\n<h4>Facebook CDN (Image Hosting)<\/h4>\n\n<p>Profile pictures, cover photos, and post images are loaded directly from Facebook's image servers (scontent.xx.fbcdn.net) when a page containing the feed is rendered. This means Meta can see the visitor's IP address as soon as the page loads, before any interaction.<\/p>\n\n<ul>\n<li>Service: Meta Platforms, Inc.<\/li>\n<li>Privacy Policy: <a href=\"https:\/\/www.facebook.com\/privacy\/policy\/\">https:\/\/www.facebook.com\/privacy\/policy\/<\/a><\/li>\n<\/ul>\n\n<h4>Facebook Video Embed<\/h4>\n\n<p>When a visitor clicks play on a Facebook video, the video is embedded via an iframe from Facebook's servers.<\/p>\n\n<ul>\n<li>Service: Meta Platforms, Inc.<\/li>\n<li>Embed URL: https:\/\/www.facebook.com\/plugins\/video.php<\/li>\n<li>Terms of Service: <a href=\"https:\/\/developers.facebook.com\/terms\/\">https:\/\/developers.facebook.com\/terms\/<\/a><\/li>\n<li>Privacy Policy: <a href=\"https:\/\/www.facebook.com\/privacy\/policy\/\">https:\/\/www.facebook.com\/privacy\/policy\/<\/a><\/li>\n<\/ul>\n\n<h4>YouTube<\/h4>\n\n<p>On any page that displays the feed, the plugin loads the YouTube iframe API so that any YouTube videos shared in your posts can play inline. When a post actually contains a YouTube video, its thumbnail image is fetched from YouTube's servers.<\/p>\n\n<ul>\n<li>Service: Google LLC<\/li>\n<li>Website: <a href=\"https:\/\/www.youtube.com\/\">https:\/\/www.youtube.com\/<\/a><\/li>\n<li>Terms of Service: <a href=\"https:\/\/www.youtube.com\/t\/terms\">https:\/\/www.youtube.com\/t\/terms<\/a><\/li>\n<li>Privacy Policy: <a href=\"https:\/\/policies.google.com\/privacy\">https:\/\/policies.google.com\/privacy<\/a><\/li>\n<\/ul>\n\n<p>The YouTube iframe API script (https:\/\/www.youtube.com\/iframe_api) is loaded on pages that display the feed. Thumbnail images are fetched from https:\/\/img.youtube.com\/. Video embeds use the privacy-enhanced domain https:\/\/www.youtube-nocookie.com\/.<\/p>\n\n<h4>Open Graph Image Recovery<\/h4>\n\n<p>When a shared post has no image from the Graph API, the plugin makes a single server-side HTTP request to the post's permalink or link target URL to extract the Open Graph (og:image) meta tag. This request is made from your web server, not from the visitor's browser. The recovered image URL is cached for one hour.<\/p>\n\n<ul>\n<li>This may connect to any website linked in a shared post (e.g., facebook.com, youtube.com, or any external URL shared on the page)<\/li>\n<li>Data sent: a standard HTTP GET request with a User-Agent header<\/li>\n<li>No visitor data is transmitted \u2014 the request originates from the server only<\/li>\n<li>Privacy policies of the target websites apply to their handling of these requests<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Download <code>bluebook-feed-sync.zip<\/code>.<\/li>\n<li>In WordPress admin, go to <strong>Plugins &gt; Add New &gt; Upload Plugin<\/strong>.<\/li>\n<li>Upload the zip file and click <strong>Install Now<\/strong>.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Go to <strong>BlueBook Feed<\/strong> in the admin menu to configure your connection.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20get%20a%20facebook%20access%20token%3F\"><h3>How do I get a Facebook Access Token?<\/h3><\/dt>\n<dd><p>You need to create a Meta (Facebook) App at developers.facebook.com, then use the Graph API Explorer to generate a Page Access Token. See the full guide in the plugin's admin page or the included README.md.<\/p><\/dd>\n<dt id=\"can%20i%20display%20multiple%20feeds%20on%20the%20same%20site%3F\"><h3>Can I display multiple feeds on the same site?<\/h3><\/dt>\n<dd><p>Yes. Use the Multi-Feed Manager to create additional feeds, each with their own settings. Display them using the shortcode with an ID parameter, e.g. <code>[bbfsync_feed id=\"2\"]<\/code>.<\/p><\/dd>\n<dt id=\"can%20i%20override%20settings%20in%20the%20shortcode%3F\"><h3>Can I override settings in the shortcode?<\/h3><\/dt>\n<dd><p>Yes. Any setting key can be used as a shortcode attribute, e.g. <code>[bbfsync_feed layout=\"carousel\" posts_desktop=\"6\" color_scheme=\"dark\"]<\/code>.<\/p><\/dd>\n<dt id=\"how%20does%20caching%20work%3F\"><h3>How does caching work?<\/h3><\/dt>\n<dd><p>The plugin caches API responses to minimize Facebook API calls. You can clear the cache from the Connect tab in the plugin settings (under \"Advanced\"). The minimum cache duration is 15 minutes.<\/p><\/dd>\n<dt id=\"can%20i%20extend%20the%20plugin%20from%20my%20theme%20or%20another%20plugin%3F\"><h3>Can I extend the plugin from my theme or another plugin?<\/h3><\/dt>\n<dd><p>Yes. As of 3.10.0 the plugin exposes 9 documented WordPress filter and action hooks covering Graph API field selection, post data and HTML rendering, cache duration, and lifecycle events. Full documentation with copy-paste examples lives in <code>docs\/hooks.md<\/code> inside the plugin folder. Examples include: filtering posts by date before caching, adding badges to posts containing specific hashtags, busting your page cache when the feed refreshes, and overriding the Graph API field set. All hooks are stable within the 3.x major version.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>3.13.13<\/h4>\n\n<ul>\n<li>New: \"Show Load More button\" toggle under Style \u2192 Load More Button lets you hide the pagination button entirely, so a feed shows just your configured number of posts as a fixed showcase. Default is on (unchanged behaviour). Also renamed the \"Lightbox &amp; Video\" settings card to \"Image &amp; Video Viewer\".<\/li>\n<li>New: \"Image size on tablet\" setting under the media viewer card gives the image a larger share of the lightbox on tablets\/iPads (portrait and landscape). Choose Standard, Large, or Extra large. The post text stays fully scrollable \u2014 larger presets simply show more of the image and less text before you scroll, and the frame stays fixed while swiping between images. The new default is Extra large, so existing feeds get the roomiest image automatically on update; set a feed to Large for a middle ground, or Standard for the previous look. Phones and desktop are unaffected.<\/li>\n<\/ul>\n\n<h4>3.13.12<\/h4>\n\n<ul>\n<li>Fixed: In multi-column layouts (Masonry, Boxed, Carousel), post text was still clipped to roughly 14 lines even when Text Clamp was turned off \u2014 so setting \"Post text length\" to 0 (show full text) together with Text Clamp off did not actually show the full text. Turning Text Clamp off now removes the grid text limit as intended. CSS only; no settings or data changes.<\/li>\n<\/ul>\n\n<h4>3.13.11<\/h4>\n\n<ul>\n<li>New: \"Post text length\" setting under Feed Layout controls how many characters of a post's text are shown before a \"See more\" link \u2014 and <strong>0 shows the full post text<\/strong>. Previously post text was always hard-truncated at 200 characters with no way to show it in full. The new default for fresh installs is 0 (show everything); existing installs are automatically pinned to the previous 200-character behaviour on update, so no live feed changes unexpectedly. Works in every layout and as a shortcode\/block override (<code>text_char_limit<\/code>). In multi-column layouts the separate Text Clamp height limit still applies \u2014 set text length to 0 and turn Text Clamp off for fully unlimited text there.<\/li>\n<\/ul>\n\n<h4>3.13.10<\/h4>\n\n<ul>\n<li>Improved: The \"How to configure Meta \/ Facebook\" setup guide has been rewritten based on real-world token generation. It drops the App Secret entirely (extend the token with the Access Token Debugger's \"Extend Access Token\" button instead), skips the business portfolio, and adds a critical checkpoint \u2014 confirm you granted the <em>right<\/em> Facebook Page via \/me\/accounts <em>before<\/em> extending the token, since Facebook's authorization pop-up silently reuses your previous choice and is the most common cause of the wrong Page ending up connected. A new \"Common pitfalls\" section collects the failure modes (token in the wrong box, short-lived Page token, leftover Debugger tabs, #100 \"Object does not exist\"). Guide content only \u2014 no change to how the plugin fetches or stores anything.<\/li>\n<\/ul>\n\n<h4>3.13.9<\/h4>\n\n<ul>\n<li>Improved: The \"How to configure Meta \/ Facebook\" setup guide has been updated to match Meta's current app-creation flow. It now uses the \"Content management \u2192 Manage everything on your Page\" use case, explains adding the pages_read_engagement permission under Use cases \u2192 Customize \u2192 Manage Pages, and retrieves the Page ID and permanent Page Access Token together via the \/me\/accounts endpoint \u2014 the reliable method for a new app still in development mode. Token verification now also checks the granted scopes.<\/li>\n<\/ul>\n\n<h4>3.13.8<\/h4>\n\n<ul>\n<li>New: Reshared posts now use a redesigned, Facebook-style share card \u2014 a source row (brand glyph, domain, open-on-Facebook affordance) above the shared post's text, a subtle hover lift and image zoom, and full Light \/ Dark \/ Inherit \/ Custom colour-scheme support via the existing CSS variables.<\/li>\n<li>New: A detected reshare's header now shows a proper \"shared a post\" label (customisable under Components, and translatable) instead of Facebook's misleading \"updated their status\" story text.<\/li>\n<li>Fix: A reshare card is no longer exposed to screen readers as a button that opens the lightbox \u2014 it is a link to the original post on Facebook and is announced as such.<\/li>\n<li>Tweak: Share-card titles that merely repeat the page name are suppressed, and the source domain is shown in normal case instead of all-caps.<\/li>\n<\/ul>\n\n<p>For the complete version history (3.13.7 and earlier), see changelog.txt included with the plugin, or the WordPress.org changelog page.<\/p>","raw_excerpt":"Display a customizable social page feed on your WordPress site with multiple layouts, color schemes, header options, like box, lightbox, and more.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/fao.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/290191","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fao.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/fao.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/fao.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=290191"}],"author":[{"embeddable":true,"href":"https:\/\/fao.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/rstake"}],"wp:attachment":[{"href":"https:\/\/fao.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=290191"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/fao.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=290191"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/fao.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=290191"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/fao.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=290191"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/fao.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=290191"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/fao.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=290191"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}