Broadcast

Description

Network Content Syndication Made Easy!

Single source content on a WordPress multisite network is now as easy as pie! Syndicate posts to other blogs in the network, update posts between blogs, sync posts, share content templates, etc. Broadcasted posts can be linked to their parents, which updates child posts when the parent post is updated. This includes all data: title, slug, content, custom fields, attachments, etc.

Broadcast is great for:

  • Chain stores
  • Content hubs
  • Franchises
  • News sites
  • Schools
  • Anything else with distributed content!

Here are some use cases for Broadcast:

Broadcast

  • Posts, pages, custom post types
  • Taxonomies (categories, tags, etc)
  • Custom fields
  • Attached images
  • Featured images
  • Galleries
  • Custom field blacklist, whitelist, and protect list.
  • User role access granularity
  • CDN support (nominally tested Amazon S3)
  • Many extra features in the add-on packs

SEO support

  • Canonical URLs of child posts.
  • Hreflang links (also see Hreflang add-on in the add-on packs)
  • Permalinks of child posts (also see Permalinks add-on in the add-on packs)
  • Yoast’s WordPress SEO plugin integration and support

Add-on Packs

There are several Broadcast add-on packs that expand the capabilities of Broadcast.

3rd party pack

The following add-ons add support for the plugin after which they are named:

If you don’t see your plugin in this list, it might not need a specialized add-on.

Control pack

These add-ons give you extra control of what you broadcast and how:

  • All Blogs gives all users access to all of the blogs in the network.
  • All Blogs Superadmin allows only superadmins to broadcast to all blogs in the network without having to be a user of the blog.
  • All Images detects all referenced local images in post text fields and adds them to the broadcast.
  • Back To Parent updates the parent post with the new child content.
  • Comments adds support for broadcasting of comments.
  • Custom Field Attachments allows post custom field containing attachment IDs to be broadcasted correctly.
  • Custom Field Posts allows post custom field containing post IDs to be broadcasted correctly.
  • Custom Field Terms allows post custom field containing taxonomy term IDs to be broadcasted correctly.
  • Delete Before Broadcast deletes duplicate and similar child posts on each blog before broadcasting.
  • Gutenberg Attachments: Modify attachment IDs found in Gutenberg blocks to match their equivalent attachments on each blog.
  • Gutenberg Menus: Modify menu IDs found in Gutenberg blocks to match their equivalent attachments on each blog.
  • Gutenberg Posts: Modify post IDs found in Gutenberg blocks to match their equivalent attachments on each blog.
  • Gutenberg Protect: Protects specific Gutenberg blocks from being overwritten during broadcasting.
  • Gutenberg Terms: Modify taxonomy term IDs found in Gutenberg blocks to match their equivalent attachments on each blog.
  • Hreflang adds support for SEO-friendly hreflang html tags.
  • Keep Child Status keeps the status of post children to private, pending, published, draft, no matter the status of the parent.
  • Link Before Broadcast attempts to find unlinked children on each child blog during broadcast.
  • Local Files automatically copies local files to each blog and updates the links in the content.
  • Local Links automatically updates links to local posts on each child blog.
  • No New Terms prevents taxonomy terms from being created on child blogs.
  • Parent Pull allows content to be pulled from (parent) blogs.
  • Per Blog Taxonomies allows individual control of specific taxonomies for each child post.
  • Permalinks provides more precise control of permalinks for both parents and children.
  • Protect Child Properties prevents various properties of child posts from being overwritten.
  • Redirect All Children redirects single post views from visitors of child posts to the parent post.
  • Redirect Parent redirect all views of a parent post to the first child post.
  • Search And Replace finds and replaces texts in posts during broadcast.
  • Shortcode Attachments modifies attachment IDs found in shortcodes to match their equivalent attachments on each blog.
  • Shortcode Menus modifies menu IDs found in shortcodes to match their equivalent menus on each blog.
  • Shortcode Posts modifies post IDs found in shortcodes to match their equivalent posts on each blog.
  • Shortcode Terms automatically translates taxonomy term IDs found in shortcodes when broadcasting.
  • Term Meta Attachments: Allow taxonomy term meta containing attachment IDs to be broadcasted correctly.
  • Thumbnail Sizes allows for different additional thumbnail sizes on a per-blog basis.
  • Update Attachments updates existing attachments by copying over the files to the child blogs.
  • Update Family updates the parent post and siblings when editing a child post.
  • Unlink On Edit unlinks child posts when they are modified.
  • User & Blog Settings (UBS) can hide the broadcast meta box and/or menu, modify the meta box to force/prevent broadcast to blogs, with separate settings for users / blogs / roles.
  • User & Blog Settings Post uses the modifications from the UBS plugin to broadcast posts with one click.

Efficiency pack

These add-ons allow you to broadcast more efficiently, saving you even more time:

  • Blog Groups 2 provides a means of groups blogs together, in order to be able to quickly select and unselect blogs from the Broadcast meta box.
  • Duplicate Attachments will duplicate the attachment and thumbnails, instead of letting WordPress regenerate them.
  • Find Some Unlinked Children can selectively link orphans / unlinked posts to parents, instead of automatically linking all found children.
  • New Blog Broadcast automatically broadcasts posts when creating a new blog.
  • Purge Children removes children and their attached files from child blogs.
  • Queue adds a broadcast queue which helps to broadcast posts to tens / hundreds / thousands of blogs.
  • Rebroadcast updates selected parent posts by using a bulk action.
  • Send To Many allows mass broadcast of several posts to blogs at once.

Utilities pack

These add-ons do things semi-related to broadcasting, but are good to have none-the-less:

  • Bulk Cloner creates clones of existing blogs on the network.
  • CDN Workaround works around faulty CDNs that do not report the correct URL for attachments.
  • Copy options copies blog options / settings between blogs.
  • Lock Post allows users to lock editing of posts / pages to only themselves and super admins.
  • Manual Post Actions manually runs bulk post actions on posts.
  • Media Cleanup: cleans up unused media by looking for unused items in the database and on disk.
  • Menus copies menus between blogs (overwrite / update), with support for equivalent child posts on the child blogs and equivalent taxonomies.
  • Page Content Shortcode provides a [bc_page_content slug="pageslug"] shortcode to display the contents of a page.
  • PHP Code runs custom PHP code on selected blogs. Easily switch themes for all blogs, for example.
  • Shortcodes provides arbitrary admin-defined global or local shortcodes.
  • Sitemaps generates network-aware sitemaps and robots.txt.
  • Sync Taxonomies synchronizes the taxonomies of target blogs with those from a source blog.
  • User Role Sync copies user roles between blogs.
  • Widgets copies widget and sidebar settings between blogs.

Documentation

Although Broadcast is relatively easy to understand by itself, for extra documentation see Broadcast’s online documentation, which covers:

Here are instructions for merging existing single installs into a WordPress network.

For developers: the code should be well-commented and easily legible for the most part. Extra developer documentation covers:

Misc

The git repository can be found at: https://bitbucket.org/edward_electric/broadcast

Screenshots

  • Broadcast meta box when editing posts
  • How posts and pages can be broadcasted
  • Post overview showing linked children
  • Post overview showing linked parents
  • Bulk actions that can be applied to several marked posts at once
  • Post actions for parent posts
  • Post actions for child posts
  • The Broadcast menu
  • Admin settings tab
  • Maintenance tab
  • Uninstall tab
  • Time savings tab showing how much time Broadcast has saved you

Installation

  1. Activate the plugin sitewide.

FAQ

I need support!

Broadcast is supported in the forum. For users of the add-on packs, support is available via e-mail.

Debug dumps

A debug dump is the long text that is displayed when broadcasting a post with debug mode on. This dump can then be read to see what Broadcast is or isn’t doing.

To switch on debug mode, see the admin settings. If your site is live it would be wise to input your IP in the associated textarea, so that only you see the debug dump.

Gutenberg support?

Yes, works as normal with one exception: the meta box does not update after publishing, so you’ll have to reload the page after publishing changes to see the new blogs list.

Blacklist, whitelisting, force broadcast

Broadcasting to specific blogs, hiding blogs and forcing blogs can be acheived with the User & Blog Settings add-on.

Bulk broadcast existing pages

To broadcast many posts at once, see the Send To Many add-on.

Galleries and attachments

How broadcast handles attachments:

  1. Attachments directly attached are stored.
  2. Attachments found in [gallery] shortcodes are stored.
  3. On the child blog, the existing attachments to the post, if any, are automatically deleted to keep attachments clean. This behavior can be configured using custom code or add-ons: Duplicate Attachments, Update Attachments.
  4. The stored attachments are copied.
  5. The thumbnail ID is replaced.
  6. The image URLs in the post content are replaced.
  7. The image IDs in [gallery] shortcodes are replaced.

Do you have a lot of attachments that you don’t want duplicated to hundreds of child blogs, in order to save space? You’ll have to find a way to refer to the images statically instead of using their media IDs. The reason for this is that when WordPress is referred to an attachment, it can only read the media IDs from the current blog. It cannot switch blogs in order to load the image.

Hide broadcast from the users

The broadcast meta box, menu and columns in the post view can be hidden from users / roles / blogs using the User & Blog Settings add-on.

Incompatible plugins

Below is a list of plugins that just will not work properly with Broadcast and / or its addons:

  • Intuitive Custom Post Order – Prevents broadcasting due to switch_to_blog() mismatch.
  • Post Type Switcher – Turns post types into attachments and vice versa.
  • Query Monitor causes the queue data to increase exponentially.
  • Theia Smart Thumbnails Premium
  • Tracking Code Manager – prevents User & Blog Settings from working by inserting data into the _POST variable during a normal page GET. Very non-standard behavior.

Orphans?

If you have already created posts on other blogs that are supposed to be children of a specific post, you can use the “find unlinked” bulk action to find and link them.

If the existing posts are not linked, broadcasting a post can result in duplicates.

To be considered an orphan the orphaned posts must have the exact same title (name) as the soon-to-be parent and be of the same post type.

You can also use the Delete Before Broadcast add-on to delete any similar posts on the child blog before broadcasting.

Timeout problems

If you have many attachments in your post, and are broadcasting the post to many blogs, you might encounter a PHP timeout. This means that broadcasting exceeded the PHP time limit and had to be aborted.

There are several solutions to this problem:

  1. Increase the PHP timeout in your PHP.ini settings. This will not speed up broadcasting, only increase your chances of completely broadcasting the post.
  2. Use the Duplicate Attachments add-on. This will duplicate any attachments + thumbnails instead of regenerating them on each child blog.
  3. Use the Queue add-on to put each child broadcast into a queue that is emptied by javascript.

You will not need solution #1 if you use solutions #2 and #3. 🙂

Why can I not see the Broadcast meta box?

Make sure that:

  1. Your user level has broadcast access (Broadcast access role)
  2. Your user has write access to more than this blog (see Admin settings > Maintenenace > View blog access). You can also use the All Blogs add-on to give yourself access to all blogs.
  3. The correct post type(s) have been selected in the Broadcast settings
  4. The User & Blog Settings add-on is not set to hide the meta box from the user / role / blog

WooCommerce

Broadcast is capable of handling simple WooCommerce products.

  1. In the Broadcast custom post type settings: Add “product”.
  2. Save the product normally first.
  3. Then broadcast, selecting the custom fields and taxonomies checkboxes.

This will broadcast all normal product settings: SKU, price, etc.

If your products have variations, a product image gallery, you want to sync stock, you want to sync orders, need the attribute taxonomies to be synced, you’ll be wanting the WooCommerce add-on.

Reviews

September 24, 2021
As far as WPMS is concerned this is probably the most valuable plugin ever created. No exaggeration. It has saved us hundreds of hours of work, made our workflow manageable. It works REALLY reliably. VERY well thought out There were a couple of issues with some broadcasting of another plugin's content and the developer responded immediately, helped fix the issue, back to business. MAGIC! We bought the premium pack - happily paid for it.
September 9, 2021
I am not exaggerating if I write that this is by far the most important FREE WordPress Multisite plugin that has been created in the entire history of WP MU. Thank you very much and I wish the premium version sells like buns. Perfect job.
August 19, 2021
Keren, tapi tidak tampil Broadcast di Meta dan di daftar Post.
July 22, 2021
Broadcast plugin is amazing. Edward's support is something else! Always there to give solutions, immediately! This is my best experience with a plugin and its developer!
June 3, 2021
The plugin works really well and is super easy to use and the response from support was really fast and friendly. Also, just to be fair, it works 100% with Divi with or without child theme, I saw another review saying it didn't
Read all 175 reviews

Contributors & Developers

“Broadcast” is open source software. The following people have contributed to this plugin.

Contributors

“Broadcast” has been translated into 2 locales. Thank you to the translators for their contributions.

Translate “Broadcast” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

47.12 20210923

  • New: Linked child posts have a clickable icon in the Broadcast meta box. The link goes to the editor for the child.
  • New add-on: Search And Filter: Adds support for the Search And Filter plugin.

47.11 20210815

  • New add-on: Scheduler: Automatically changes the publish date of child posts during broadcasting.
  • Fix: Parse taxonomy term descriptions so that their content can be modified during broadcasting by add-ons such as the Shortcode * add-ons.
  • Code: Added $bcd->custom_fields()->set() function.
  • Code: Added set_post_status() function.

We’re skipping .10 since that’s the same as .1

47.09 20210721

  • Fix: Update SDK compatability with PHP8
  • Tested up to WP 5.8

47.08 20210623

  • Fix: Correct URL for non-standard install directories.
  • Fix: Bulk post popup only pops up once now on when plugins modify the post overview page (ACF, for example).
  • New add-on: Custom Field Cleanup: Cleans up the custom fields of a post.
  • New add-on: Imagify: Adds support for the Imagify plugin / service.
  • New add-on: More Children: Allows children to create more children of the parent.
  • New add-on: Term Meta Attachments: Allow taxonomy term meta containing attachment IDs to be broadcasted correctly.

47.06 20210412

  • New add-on: Rank Math SEO adds support for the Rank Math SEO plugin.
  • Fix: Force syncing of a taxonomy when no post type is specified.
  • Tweak: Restore $_POST after broadcasting finished.

47.03 20210308

  • New add-on: All In One SEO adds support for the All in One SEO plugin.
  • New add-on: GeneratePress adds support for the GeneratePress theme / plugin.
  • Fix: Update javascript to be compatible with new WordPress JQuery version.
  • Fix: Remove warning when checking for the taxonomy protect list.

47.02 20210216

  • Code: SDK update to fix checkbox values not correctly reported when saving. Fix mainly for code that uses get_post_value() instead of is_checked().

47.01 20210210

46.19 20210127

  • New add-on: LiteSpeed Cache: Adds support for the LiteSpeed Cache plugin.
  • Fix: Broken time savings data.
  • Code: Add sync_taxonomy_start action.
  • Code: SDK update.

46.18 20201229

  • Fix: Clear taxonomy cache for all taxonomies, not just categories.
  • Code: Update API to allow for low_priority() calls.
  • Code: Added broadcasting_after_modify_post action.

46.17 20201209

  • Fix: Prevent fatal error when programmatically broadcasting and the user does not have enough broadcasting permission.

46.16 20201203

  • Tweak: The custom field and taxonomies checkboxes in the Broadcast meta box in the editor are now selected by default and hidden.

So by default the custom fields and taxonomies are now automatically broadcasted. This should be fine for 99% of users.

If your users need the checkboxes visible so that your users can uncheck the boxes, there’s a setting for that: Admin > Broadcast > Settings tab > Misc subtab > Show extra checkboxes

See image here: https://broadcast.plainviewplugins.com/wp-content/uploads/2020/12/show-extra-checkboxes.png

46.15 20201111

  • New: Unlink posts on blogs that are being deleted.
  • Fix: Warning when overriding a link to a post that doesn’t exist.

46.14 20201002

  • Fix: Allow cron (user 0) to use Broadcast.
  • New: Add get_or_broadcast action for use with this snippet.

46.13 20200922

46.12 20200810

46.10 20200714

46.09 20200708

46.07 20200605

46.06 20200411

46.05 20200325

46.04 20200310

  • Fix: Force WordPress to set the date of scheduled posts.

46.03 20200224

  • Fix: Unslash the child post content.
  • Fix: Properly decode Gutenberg blocks using unicode number encoding. \u0022.
  • Dev: Added attachment_matches filter to allow the attachments to be modified before matching them.

46.02 20200212

46.01 20200116

  • Fix: Keep track of synced taxonomies per blog, to allow for multisyncing of taxonomies. This internal API change allows ACF taxonomy fields to reference other taxonomies and still sync correctly.

45.07 20191211

  • Fix: Try resyncing taxonomies that are empty. Some plugins block the display of taxonomies that are shared between post types. This change fixes some Post Expirator categories.

45.06 20191116

  • New add-on: Update Family: Update the parent post and siblings when editing a child post.
  • New: Add option to select where to show the select all / none blog selector. Admin > Broadcast > Settings > Misc
  • Fix: Do not resync already syncing taxonomies. Prevents looping in some cases.
  • Fix: Save equivalent taxonomy terms earlier. This fixes a syncing bug when taxonomies refer to other taxonomies.

45.05 20191016

  • Fix: All taxonomy terms being set when none are set.

45.04 20191006

  • Fix: Content and title changing to 0.

45.03 20191004

  • Flip HTML5: Adds support for Flip HTML5 plugin.
  • Fix: Replace attachment IDs in data-wp-pid attribute.

45.02 20180919

  • Fix: Replace the image URLs in post content later, to allow the various shortcode add-ons to correctly replace image IDs.
  • Fix: Replace attachment IDs in data-id attributes and ?attachment_id=123 URLs.
  • Fix: Add support for parsing multiline Gutenberg blocks.
  • Fix: Increase compatibility with add-ons that require syncing of extra taxonomies.
  • Fix: Linking API cache update, in case the same post is used to unlink and then link in the same request.

45.01 20180828

  • Fix: Clean up missing taxonomies before trying to sync them. Fixes warnings in terms_and_taxonomies trait and fatal errors.
  • New add-on: Gutenberg Attachments: Modify attachment IDs found in Gutenberg blocks to match their equivalent attachments on each blog.
  • New add-on: Gutenberg Menus: Modify menu IDs found in Gutenberg blocks to match their equivalent attachments on each blog.
  • New add-on: Gutenberg Posts: Modify post IDs found in Gutenberg blocks to match their equivalent attachments on each blog.
  • New add-on: Gutenberg Terms: Modify taxonomy term IDs found in Gutenberg blocks to match their equivalent attachments on each blog.
  • New add-on: WP Ultimo: Adds support for the WP Ultimo plugin.
  • Dev: Add new broadcasting_data->try_add_attachment() to add attachments without throwing exceptions.
  • Dev: Added Linking API.

44.05 20190715

  • New: Attachment taxonomies are copied. This adds support for the Responsive Lightbox & Gallery plugin’s media folder functionality.
  • Fix: Find Unlinked Children now works with pages that have the same slug as other pages.
  • Fix: get_user_writeable_blogs now checks that the blog in the add_access() call is valid. Prevents a bunch of warnings.
  • Fix: Force non-publish post statuses via SQL change. This fixes a bug when drafts would not convert to scheduled.
  • New add-on. Custom Field Terms: Allow post custom field containing taxonomy term IDs to be broadcasted correctly.
  • New add-on. Download Manager: Adds support for the Download Manager plugin.
  • New add-on. WPForms: Adds support for the WPForms plugin.

44.02 20190505

  • Fix: Custom fields are first stripped (blacklisted fields removed) before being stored and readied for broadcast. Fixes featured images being broadcasted when they should be ignored.

44.01 20190415

43.17 20190316

  • Fix: Settings are not saved for some configs due to overzealous WordPress internal caching.

43.16 20190222

  • New: Add support for Gutenberg standard image blocks: wp:image {“id”:1780}. The image ID will be modified on each child post if the image is attached to the post.
  • Fix: Use the site’s URL in the broadcast meta box if the site’s name is empty.

43.15 20190212

  • Fix: Watch trash and untrash post actions more carefully. (now also watching untrashed_post and wp_trash_post actions).
  • Dev: Add API command: find_unlinked_children.

43.14 20190102

  • Dev: Add add_access() method to get_user_writable_blogs action. Example use is in this snippet.
  • Dev: Add API commands: restore_children, trash_children and unlink.

43.10 20181018

  • Fix: Ignore invalid taxonomies during the get_current_blog_taxonomy_terms() function.
  • Fix: Escape when saving child custom fields. Fixes JSON objects breaking on child posts. More specifically: prevents Cornerstone Page Builder data from breaking.
  • Tweak: Default value for “keep attachments” for new installs is “yes”. It’s a good setting to enable.
  • New add-on. Simple Custom Post Order adds support for the Simple Custom Post Order plugin.

43.9 20180922

  • Fix: Existing attachments are to be counted as copied attachments. Improves URL and ID translation of existing images in the post content.
  • New: Also parse post title and excerpt, giving actions and add-ons a change to modify those post fields during broadcasting.
  • New add-on. Custom Field Posts: Allow post custom field containing post IDs to be broadcasted correctly.
  • New add-on. Formidable Forms: Adds support for the Formidable plugin.
  • New add-on. Unlink On Edit: Unlinks child posts when they are modified.
  • Dev: Add broadcast_override_canonical_url filter.
  • Dev: Add siteurl to broadcast_data blog object.

43.8 20180821

  • New: “Keep Attachments” option added. This prevents the automatic housekeeping Broadcast does when broadcasting: normally all the attachments of a child post are deleted and then the new attachments are recopied. This prevents the automatic deletion.
  • Dev: override_child_permalink action now has $child_post property.
  • New add-on. User Access Manager: Adds support for the User Access Manager plugin.

43.7 20180724

  • Fix: Store attachment data for each blog separately. This is to prevent attachment ID conflicts when using the Queue add-on.
  • New: Display blog ID in meta box when hovering over the blog’s name.
  • New add-on. UberMenu: Adds support for the UberMenu menu plugin.

43.6 20180625

  • Fix: Hide broadcast box when user does not have correct role.
  • Fix: Workaround added for plugins that misbehave, hiding the Broadcast meta box when editing pages, even though the user has Broadcast access.
  • Fix: Even better modifying of image caption shortcodes.
  • SDK update to fix static calls on object stores.

43.5 20180530

  • Fix: Better replacement of attachment ID in caption shortcodes.
  • Fix: Plugin list link to Broadcast settings.
    New add-on: CM Tooltip Glossary: Adds support for the CM Tooltip Glossary plugin.
    New add-on: Copy options: Copies blog options / settings between blogs.

43.4 20180505

  • New: Add ThreeWP_Broadcast_debug_text filter to allow for modification of debug text.
  • Fix: Fix HTML tables not working due to _() function conflict on some very specific installs.

43.3 20180413

43.2 20180403

43 20180226

42.4 20180129

  • New: Option to show all sites on a multinetwork setup, instead of defaulting to just the sites on the current network.
  • Fix: Do not broadcast non-existent posts using the API.
  • Fix: Speed up post editing when user has access to a large amount of blogs by caching the blog names. Best used in conjunction with the All-Blogs add-ons.
  • Fix: Adding Tracking Code Manager plugin to list of incompatible plugins.
  • New add-on. H5P: Adds support for the H5P Interactive Content plugin.

42.3 20180115

  • Fix: Also sync term_order setting when syncing terms.
  • Fix: Do not overwrite attachment’s _wp_attached_file property, which otherwise would prevent the attachment from being seen. Sometimes.

42.2 20171213

  • Fix: GMT dates on draft posts were being incorrectly set from 0000-00-00 (a very invalid date in itself, btw).
  • New add-on. GoodLayers: Adds support for the GoodLayers family of themes.

42.1 20171130

  • Fix fatal error for PHP v5.6 installs.

42 20171130