=== Social Media Auto Poster - Schedule & Publish to Social Post Flow ===
Contributors: socialpostflow
Donate link: https://www.socialpostflow.com/integrations/wordpress
Tags: auto post, social media, telegram, instagram, linkedin
Requires at least: 6.0
Tested up to: 6.9
Requires PHP: 7.4
Stable tag: 1.3.0
License: GPLv3 or later
License URI: https://www.gnu.org/licenses/gpl-3.0.html

Auto publish WordPress posts to Facebook, X/Twitter, Threads, Instagram, LinkedIn, Pinterest, TikTok, Mastodon, Bluesky and Telegram.

== Description ==

Auto Post to Social Media is a powerful WordPress plugin that automatically publishes your Posts, Pages, Events, Products and Custom Post Types to Facebook, X/Twitter, Threads, Instagram, LinkedIn, Pinterest, TikTok, Mastodon, Bluesky and Telegram. Connect your social media accounts in minutes and start scheduling posts with unique, dynamic content for each platform.

Don't have a Social Post Flow account? Pricing starts at $49/year for 5 social accounts, and you can [sign up for a free 7 day trial](https://app.socialpostflow.com/register)

See our quick start tutorial to auto publish your WordPress content:

[youtube https://www.youtube.com/watch?v=IFjYKMjnRB4]

=== Why Choose This Social Media Auto Poster? ===

Unlike basic WordPress to Facebook or WordPress to Twitter plugins, this social media automation tool gives you complete control over how your content appears on each platform. Create multiple unique status messages per post type, schedule publication times, or add posts to your social media queue automatically.

=== Still Works with Twitter / X ===

If you're looking for a replacement for Jetpack Social, Blog2Social, or NextScripts to auto publish to Twitter/X, this is one of the few WordPress social media plugins that still supports Twitter/X auto posting after the API changes.

=== Smart Social Media Automation Features ===

**Multiple Status Messages Per Post Type**
[Configure different status messages](https://www.socialpostflow.com/documentation/wordpress-plugin/status-configuration-and-types/) for each post type and social profile. Your blog posts can have different messaging than your WooCommerce products or Events Calendar events.

**Dynamic Tags for Unique Content**
Build truly unique social media posts using dynamic tags that pull in your WordPress Post Title, Content, Excerpt, Custom Fields, Author information, and more. Never send duplicate content to your social media profiles.

**Conditional Publishing Rules**
Publish posts to social media only when [specific conditions are met](https://www.socialpostflow.com/documentation/wordpress-plugin/status-conditions/). Filter by Post Author, Taxonomy Terms, Custom Field Values, or any combination of criteria to ensure only the right content reaches your social audiences.

**Flexible Scheduling Options**
Choose to publish immediately when your WordPress post goes live, schedule for a specific date and time, or add to your existing Social Post Flow queue for optimal posting times.

**Built-in Social Media Protection**
Our technology prevents accidental duplicate posts and includes protection to keep your social media profiles safe from suspension due to over-posting or spam flags.

=== Auto Post to Multiple Social Networks ===

**Facebook Auto Post**
Automatically share WordPress posts to Facebook Pages with custom messaging, images, and link previews. Perfect for business pages and community management.

**Twitter / X Auto Post**
Still working after the Twitter API changes! Auto publish to Twitter/X with character count optimization, hashtag support, and media attachments.

**Instagram Auto Post**
Share your WordPress content to Instagram with image optimization and caption formatting specifically designed for Instagram's requirements.

**LinkedIn Auto Post**
Publish professional content to LinkedIn company pages and personal profiles with full image and link preview support.

**Threads Auto Post**
Automatically cross-post your WordPress content to Meta's Threads platform with optimized formatting for the Threads audience.

**Pinterest Auto Post**
Share visual content from your WordPress site to Pinterest boards automatically with proper image optimization and pin descriptions.

**TikTok Auto Post**
Automatically share your WordPress content to TikTok with video and image support optimized for TikTok's vertical format and engagement-focused audience.

**Mastodon Auto Post**
Connect to any Mastodon instance and auto publish your WordPress posts to the federated social network.

**Bluesky Auto Post**
Connect to any Bluesky instance and auto publish your WordPress posts to Bluesky.

**Telegram Auto Post**
Connect to your Telegram channels and groups to auto publish your WordPress posts to Telegram.

=== Repost Old Content and Evergreen Posts ===

**Automatic Content Recycling**
Automatically [revive old posts](https://www.socialpostflow.com/documentation/wordpress-plugin/auto-reposting/) that haven't been updated recently. Set the time period (days, weeks, or years) and let the plugin resurface your evergreen content to grow your social media engagement.

**Bulk Publish Old Posts**
[Bulk publish](https://www.socialpostflow.com/documentation/wordpress-plugin/bulk-publishing/) multiple older posts and republish them to social media in bulk. Perfect for promoting your best evergreen content or filling gaps in your social media calendar.

**Smart Duplicate Prevention**
The plugin tracks which posts have been shared and prevents accidental duplicate posting, ensuring your social media feeds stay fresh and engaging.

=== Complete Image Control for Social Media ===

**OpenGraph Integration**
Leverage your SEO plugin's OpenGraph metadata to create beautiful social sharing cards automatically. Works seamlessly with Yoast SEO, Rank Math, All-in-One SEO Pack, and SEOPress.

**Multiple Image Sources**
Choose from various image sources for your social media posts:
- Featured images from your WordPress posts
- Additional images uploaded directly in the plugin
- Advanced Custom Fields (ACF) image or gallery fields
- Inline images from your post content
- Custom field image URLs

**Automatic Image Optimization**
Images are automatically formatted and optimized for each social network's requirements, ensuring your visuals look perfect on Facebook, Instagram, Pinterest, and more.

=== WordPress Plugin Integrations ===

This social media scheduler works seamlessly with popular WordPress plugins:

**Event Management Plugins**
- [The Events Calendar](https://www.socialpostflow.com/documentation/wordpress-plugin/the-events-calendar/) - Auto post events to social media with dates, times, and locations
- [Event Manager](https://www.socialpostflow.com/documentation/wordpress-plugin/events-manager/) - Share event listings automatically
- [Modern Events Calendar](https://www.socialpostflow.com/documentation/wordpress-plugin/modern-events-calendar/) - Publish calendar events to Facebook, Twitter, and more

**E-Commerce Integrations**
- [WooCommerce](https://www.socialpostflow.com/documentation/wordpress-plugin/woocommerce/) - Auto post products with images, prices, and descriptions
- [WP Job Manager](https://www.socialpostflow.com/documentation/wordpress-plugin/frontend-post-submission-autoblogging-plugins/) - Share job listings to social media automatically

**Content and Autoblogging**
- User Submitted Posts - Auto publish user-generated content
- WP Property Feed - Share property listings to social networks
- WPeMatico - Auto post imported content from RSS feeds

**SEO Plugin Integration**
- Yoast SEO - Use Yoast's OpenGraph data for social sharing
- Rank Math - Leverage Rank Math's social metadata
- All-in-One SEO Pack - Integrate with AIOSEO's social settings
- SEOPress - Use SEOPress social tags and previews

=== Developer-Friendly Features ===

**WP-Cron Support**
Enable WP-Cron to send status updates via scheduled tasks, improving UI performance and ensuring reliable posting even during high-traffic periods.

**WP-CLI Integration**
Use [WordPress CLI](https://www.socialpostflow.com/documentation/wordpress-plugin/wp-cli/) commands to repost old posts, manage social connections, and automate social media tasks from the command line.

**Hooks and Filters**
Extensive action and filter hooks allow developers to customize behavior, integrate custom post types, and extend functionality to meet specific requirements.

=== Simple Social Media Setup - No API Complexity ===

Forget about App IDs, OAuth tokens, and complicated authorization processes. Connecting your social media profiles happens in just a few clicks through your Social Post Flow account dashboard. The entire setup takes minutes, not hours.

Once connected, simply select which social profiles to use in the WordPress plugin, configure your status messages with dynamic tags, and your social media automation is ready to go.

=== How to Schedule Social Media Posts from WordPress ===

The plugin offers three scheduling options:

**Immediate Publishing**
Posts are sent to social media the moment you publish or update your WordPress content.

**Specific Date and Time**
Schedule your social media posts for a specific date and time. Perfect for coordinating launches, promotions, or time-zone optimization.

**Queue-Based Publishing**
Add posts to your Social Post Flow queue, which distributes them according to your optimal posting schedule configured in your Social Post Flow account.

== How to Use Dynamic Tags in Social Posts ==

[Dynamic tags](https://www.socialpostflow.com/documentation/wordpress-plugin/status-tags/) automatically pull content from your WordPress posts to create unique social media messages:

Available dynamic tags:
- {title} - Post title
- {content} - Full post content
- {excerpt} - Post excerpt
- {url} - Post permalink
- {author} - Author name
- {author_email} - Author email
- {date} - Publication date
- {time} - Publication time
- {custom_field_name} - Any custom field value
- {taxonomy_term} - Category or tag names

Example status message:
"New post: {title} - {excerpt} Read more: {url} #blog"

=== How to Bulk Publish Old WordPress Posts to Social Media ===

1. Navigate to Social Post Flow > Bulk Publish in WordPress admin
2. Select the post type (Posts, Pages, Products, etc.)
3. Choose date range or specific posts to republish
4. Select which social networks to publish to
5. Configure unique status messages for this bulk action
6. Click "Bulk Publish" to add posts to your social media queue

Perfect for promoting evergreen content or filling your social media calendar.

=== How to Repost Old Content Automatically ===

Evergreen content automatic reposting helps keep your social media active:

1. Click Social Post Flow in the WordPress admin menu
2. Click the Repost Settings tab
3. Set the minimum age for posts to be reposted (days, weeks, months, or years)
4. Choose how frequently to repost (e.g., every 30 days)
5. Select which post types to include
6. Save settings
7. For each Post Type, define statuses at Social Post Flow > [Posts/Pages] > Defaults > Repost

The plugin will automatically resurface your older content on the schedule you define.

=== How to Conditional Publish Based on Categories or Tags ===

Only publish certain posts to social media based on WordPress taxonomy terms:

1. Edit your status (e.g. Social Post Flow > Posts > Defaults > Publish)
2. Select which terms must be present (or absent) for publishing under Category / Tag
3. Save your conditional rules

Now only posts matching your criteria will be auto posted to social media.

=== How to Stop Auto Posting for Individual Posts ===

Override automatic posting on a per-post basis:

1. Edit any WordPress Post, Page or Custom Post Type
2. Scroll to the "Social Post Flow" meta box
3. Select "Do NOT Post to Social Post Flow"
4. Save the post

This gives you complete control over which posts get shared to social media.

=== How to Connect WooCommerce Products to Social Media ===

Automatically promote your WooCommerce products on social media:

1. Install and activate WooCommerce and this plugin
2. Configure product-specific status settings
3. Use dynamic tags for product data: {title}, {price}, {sku}, {short_description}
4. Include product images automatically
5. Set conditional rules to only post certain product categories
6. Products will auto post when published or updated

=== How to Auto Post Events to Social Media ===

Works with The Events Calendar, Event Manager, and Modern Events Calendar:

1. Install your preferred events plugin
2. Configure event-specific status settings in Social Post Flow by clicking the Events tab
3. Use event dynamic tags: {event_date}, {event_time}, {event_location} as necessary
4. Schedule posts to go live before events for maximum promotion
5. Events automatically post when published

=== Integration with Yoast SEO ===

This plugin integrates seamlessly with Yoast SEO to use your configured social metadata:

- Automatically uses Yoast's Facebook title and description
- Leverages Yoast's Twitter card data
- Respects Yoast's OpenGraph image settings
- Falls back to post content if Yoast data isn't configured

=== Integration with Rank Math ===

Full integration with Rank Math SEO plugin:

- Uses Rank Math's social titles and descriptions
- Respects Rank Math's OpenGraph settings
- Leverages Twitter card configuration
- Automatically pulls Rank Math's social images

=== Integration with All-in-One SEO Pack ===

Seamless integration with AIOSEO:

- Uses AIOSEO's Facebook metadata
- Respects Twitter card settings
- Leverages OpenGraph image configuration
- Falls back gracefully if data isn't set

=== Integration with SEOPress ===

Works automatically with SEOPress:

- Uses SEOPress social titles
- Respects OpenGraph configuration
- Leverages Twitter card data
- Automatically formats social previews

=== External Services ===

This plugin connects to the Social Post Flow API using OAuth 2.0 PKCE to:
- Fetch your connected social media profile names and IDs
- Send your WordPress Posts to one or more of your social media profiles

You may revoke access at any time by either:
- Clicking `Disconnect` in the Plugin's settings screen
- Revoking access to the WordPress Plugin from your [Social Post Flow account](https://app.socialpostflow.com)

Refer to Social Post Flow's [Terms and Conditions](https://www.socialpostflow.com/terms-and-conditions/) and [Privacy Policy](https://www.socialpostflow.com/privacy-policy/) for more information.

=== Support ===

Support for this WordPress Plugin can be requested on the <a href="https://wordpress.org/support/plugin/social-post-flow/">WordPress forums</a>, or via your Social Post Flow account.

== Installation ==

1. Install and Activate the Social Post Flow Plugin from the WordPress plugin directory
2. Navigate to the Social Post Flow menu entry in WordPress admin
3. Click "Authorize" to connect your Social Post Flow account
4. Once connected, configure the Plugin's status settings to auto post to social media
5. Create or edit a post to test automatic social media publishing

== Frequently Asked Questions ==

= Do I need a paid Social Post Flow account? =

Yes - pricing starts from $49/year to post to up to 5 connected social profiles. We offer a 7 day free trial so you can test all features before committing. Register at https://app.socialpostflow.com.

= Can I still auto publish to Twitter / X? =

Yes! This plugin still supports Twitter/X auto posting even after the Twitter API changes. Many other WordPress social media plugins stopped working with Twitter, but Social Post Flow maintains full Twitter/X integration.

= Which social media profiles can I auto post to? =

You can auto publish to:
- Facebook Pages
- X / Twitter
- Threads
- Instagram
- LinkedIn Profile
- LinkedIn Page
- Pinterest Boards
- TikTok
- Mastodon
- Bluesky
- Telegram

= How do I add images to my social media posts? =

The plugin offers multiple ways to include images:
1. WordPress' Featured Image
2. Upload additional images in the plugin's image field on each post
3. Use Advanced Custom Fields (ACF) image or gallery fields
4. Pull images from your post content

You can configure image preferences in each status setting.

= Does this work with WooCommerce products? =

Yes! The plugin fully supports WooCommerce. You can auto post products with images, prices, descriptions, and SKUs. Use dynamic tags to pull product data into your social media posts automatically.

= Can I customize the message for each social network? =

Absolutely. You can create multiple status configurations, each targeting different social networks with unique messages, images, and scheduling options. Your Facebook posts can look completely different from your X/Twitter posts.

= How do I schedule posts for specific times? =

In your status settings, choose "Specific Date/Time" as your publishing option. You can then set the exact date and time for each social media post. Alternatively, use queue-based publishing to distribute posts according to your optimal posting schedule.

= Can I post to multiple Facebook pages? =

Yes. Connect multiple Facebook pages in your Social Post Flow account, then select which pages should receive posts in each status configuration. You can send different posts to different pages based on categories, tags, or custom fields.

= Does this support custom post types? =

Yes! The plugin works with any custom post type including WooCommerce products, events, testimonials, portfolios, and more. Each post type can have its own status configurations and social media settings.

= How do I use dynamic tags in my posts? =

Dynamic tags are wrapped in curly braces and automatically pull data from your WordPress posts. For example:

"New blog post: {title} - {excerpt} Read more: {url}"

Available tags include {title}, {content}, {excerpt}, {url}, {author}, {date}, custom fields, and more.

= Can I exclude certain posts from auto publishing? =

Yes, in several ways:
1. Disable auto posting on individual posts using the meta box
2. Use conditional publishing rules to filter by author, category, or custom fields
3. Set status configurations to only apply to specific post types
4. Manually control which posts get published

= How do I auto post to Instagram from WordPress? =

Connect your Instagram business or creator account through Social Post Flow, enable Instagram in your status settings, and configure your caption with dynamic tags. The plugin automatically formats images for Instagram's requirements. Note that Instagram requires a business or creator account (not personal) for automated posting.

= What is the difference between scheduling and queuing? =

Scheduling publishes your post at a specific date and time you choose. Queuing adds your post to your Social Post Flow queue, which distributes posts according to the optimal posting schedule you've configured in your Social Post Flow account (e.g., weekdays at 9am and 3pm).

= Can I repost old content automatically? =

Yes! Enable the "Repost" feature to automatically resurface evergreen posts. Set the minimum age for reposting (e.g., 90 days) and how frequently to repost (e.g., every 30 days). The plugin handles everything automatically.

= What happens if a social media post fails? =

Failed posts are logged in the plugin's log viewer. You can see the error message, timestamp, and which social network failed. Common issues include network disconnections, rate limits, or content that violates platform policies.

= Can I preview posts before they go live? =

While the plugin doesn't offer a preview feature, you can see exactly what will be posted by looking at your configured status message with dynamic tags. You can also test posts by publishing draft content first, or using the "Disable Auto Post" option while setting up.

= How do I stop auto posting for a specific post? =

Edit the post and look for the "Social Post Flow" meta box. Select "Do NOT Post to Social Post Flow" to prevent the post from being automatically shared to social media. This setting only affects that specific post.

= Does this work with Gutenberg blocks? =

Yes, the plugin works seamlessly with the WordPress block editor (Gutenberg). Dynamic tags can pull content from any block, and the plugin's meta box appears in the post editor sidebar for easy access.

= Can I add hashtags automatically? =

Yes! Include hashtags directly in your status message or use dynamic tags to pull hashtags from custom fields or taxonomy terms.

= How do I troubleshoot failed posts? =

1. Check the plugin's log viewer for specific error messages
2. Verify your social accounts are still connected in Social Post Flow
3. Ensure your status message doesn't exceed character limits
4. Check that images are properly formatted and accessible
5. Verify your WordPress site can connect to the Social Post Flow API
6. Review social network-specific requirements (e.g., Instagram business account)

= Is there a posting limit per day? =

The plugin itself doesn't impose limits, but social networks have their own rate limits. For example, X/Twitter has daily tweet limits, and Instagram restricts posting frequency. The plugin includes built-in protection to prevent exceeding these limits and risking account suspension.

= Can I use this plugin with multiple WordPress sites? =

Yes! A single Social Post Flow account can be connected to unlimited WordPress sites. Each site can post to the same social media profiles or different ones, giving you complete flexibility for multi-site management.

= Does this plugin slow down my website? =

No. Social media posting happens asynchronously through the Social Post Flow API, so your WordPress site's performance isn't affected. You can also enable WP-Cron support to further improve performance by processing posts in the background.

= Can I edit posts that were already shared? =

When you update a WordPress post that was previously shared, you can choose whether to re-share the updated version to social media. This is controlled in your status settings with the "Update" options.

= What's the refund policy? =

Social Post Flow offers a 7-day free trial so you can test all features before paying. Refund policies are managed through your Social Post Flow account. Check https://www.socialpostflow.com/terms-and-conditions/ for complete details.

== Screenshots ==

1. Settings Screen when Plugin is first installed.
2. Settings Screen when Social Post Flow is authorized.
3. Settings Screen showing available options for Posts.
4. Post-level Logging.

== Changelog ==

= 1.3.0 (2026-05-04) =
* Added: Status: Instagram: Strip URLs from text, as Instagram does not support linking URLs
* Added: Text to Image: Strip URLs from text

= 1.2.9 (2026-04-09) =
* Added: Import & Export: Export: Choose which settings to export

= 1.2.8 (2026-04-06) =
* Fix: Settings: Text to Image: PHP Warning for Telegram accounts 
* Fix: Settings: Display social network provider name with correct capitalization

= 1.2.7 (2026-04-03) =
* Added: Telegram support

= 1.2.6 (2026-03-31) =
* Updated: Settings: Wording of notice if subscription expired

= 1.2.5 (2026-03-24) =
* Fix: Post: Log: Ensure `No log entries exist` spans table columns
* Fix: Post: Log: Only display `Export Log` and `Clear Log` buttons if log entries exist
* Fix: Post: Featured and Additional Images: Updated description to clarify functionality

= 1.2.4 (2026-03-04) =
* Added: Status: Display notice if settings do not save and WordPress options table charset and default collation are invalid
* Added: Status: Display notice if duplicate statuses exist

= 1.2.3 (2026-02-23) =
* Added: CSS: WordPress Coding Standards
* Added: JS: WordPress Coding Standards
* Fix: Status: First Comment: Show tags when entering opening curly brace `{`
* Fix: Quick Edit: Remove all hidden inputs when a search is performed, to prevent errors on some nginx configurations

= 1.2.2 (2026-02-07) =
* Added: Settings: General Settings: Disable Excerpt Fallback. See Docs: https://www.socialpostflow.com/documentation/wordpress-plugin/general-settings/#disable-excerpt-fallback
* Fix: Menu: Show correct icon color depending on user's admin color scheme

= 1.2.1 (2026-01-29) =
* Fix: Authorization: Improved reliability of authorization by using unique code identifier

= 1.2.0 (2026-01-26) =
* Added: TikTok support

= 1.1.9 (2026-01-20) =
* Fix: Validation: `DateTimeZone::__construct(): Unknown or bad timezone` warning notice when account used a UTC offset
* Fix: Billing URL in notices

= 1.1.8 (2026-01-19) =
* Added: Display number of days remaining in trial

= 1.1.7 (2026-01-08) =
* Fix: New Installations: Set statuses to add to end of queue (i.e. hourly) instead of post immediately, for better views and engagement
* Fix: Repost: Don't automatically schedule the repost event when reposting is disabled

= 1.1.6 (2026-01-02) =
* Added: Show Connect Profiles screen when no social media profiles are connected to Social Post Flow
* Added: Automatically enable publishing to connected social media profiles on new installations
* Added: Automatically configure publishing to use the 'link' Post Type, to display an OpenGraph / card on published statuses
* Updated: Status: Type: Improve enable/disable type based on provider

= 1.1.5 (2025-12-23) =
* Added: Bluesky support

= 1.1.4 (2025-12-03) =
* Fix: Settings: Status: Show text in Schedule column when changing the Schedule option = Post Immediately

= 1.1.3 (2025-11-28) =
* Added: Status: Add Profile link
* Added: Text to Image: Mastodon: Recommended image size dimensions

= 1.1.2 (2025-11-18) =
* Fix: Status: Image: Additional Images: Display "Auto populate from Post content", not "Auto populate from Featured image content"
* Fix: Status: Images: Additional Images: Auto populate from Post content: improve detection of images in content

= 1.1.1 (2025-11-17) =
* Fix: Logs: PHP Warning: Undefined array key `0`

= 1.1.0 (2025-10-29) =
* Removed: Settings: Status: Add Profile link, as it resulted in settings failing to save

= 1.0.9 (2025-10-27) =
* Added: Settings: Display notice if WordPress and Social Post Flow timezones do not match
* Added: Settings: Status: Add Profile link
* Fix: Documentation links

= 1.0.8 (2025-10-23) =
* Added: Settings: Display notice if trial ended or no Posts sent to Social Post Flow
* Added: Settings: Support link
* Updated: Renamed Social Post Flow submenu link to Settings

= 1.0.7 (2025-10-17) =
* Fix: Status: Text: Taxonomy: Retain non-Latin characters

= 1.0.6 (2025-10-08) =
* Fix: Status: Undefined variable $status in WPML class

= 1.0.5 (2025-08-25) =
* Fix: Status: Conditions: Polylang: Fatal error due to Polylang including WPML's `wpml_get_language_information` method

= 1.0.4 (2025-08-21) =
* Added: Pinterest support
* Fix: Plugins: Settings Link

= 1.0.3 (2025-08-18) =
* Fix: Logs: Use nonce for <select> filter dropdowns
* Fix: Logs: Honor order by column
* Fix: Logs: Honor ordering results when no search performed
* Fix: Logs: Escape where clause when filtering and searching logs

= 1.0.2 (2025-08-15) =
* Fix: Status: Link: Honor value in Link field, instead of always using the Post's URL

= 1.0.1 (2025-08-14) =
* Added: Logs: Search: Search `Status Response` when performing a search
* Added: Import & Export Configuration. See Docs: https://www.socialpostflow.com/documentation/wordpress-plugin/import-export-settings/
* Added: Support link in menu
* Fix: Settings: Authentication: Correct wording to remove `enter API Key`
* Fix: Status: Yoast SEO: Facebook and Twitter Title and Description tags: Read data from post meta if not in indexable table, to ensure correct output
* Fix: Repost: Fatal error when attempting to use Repost functionality

= 1.0.0 =
* First release.

== Upgrade Notice ==
