A WordPress plugin that automatically posts your blog posts to Threads with smart character limit handling and URL shortening.
- Automatic Posting: Posts to Threads when you publish a new blog post
- Character Limit Handling: Automatically truncates long posts to fit Threads' 500 character limit
- URL Shortening: Uses Bitly to shorten URLs for long posts
- Manual Posting: Post existing blog posts to Threads with one click
- OAuth Integration: Secure authorization flow compliant with Meta's API requirements
- Duplicate Prevention: Tracks which posts have been shared to prevent duplicates
- GDPR Compliance: Includes data deletion endpoints for user privacy
- WordPress 5.0 or higher
- PHP 7.4 or higher
- A Meta for Developers account
- A Threads account
- A Bitly account (optional, for URL shortening)
- Download the plugin files
- Upload the
WordpressToThreadsfolder to your/wp-content/plugins/directory - Activate the plugin through the 'Plugins' menu in WordPress
- Go to Settings → WordPress to Threads to configure
- Go to Meta for Developers
- Click "My Apps" and create a new app
- Select "Other" as the app type
- Add the Threads product to your app
- Note your App ID and App Secret
In your Meta app settings, add these OAuth redirect URIs:
https://yourdomain.com/?threads_oauth_action=redirecthttps://yourdomain.com/?threads_oauth_action=deauthorizehttps://yourdomain.com/?threads_oauth_action=data_deletion
Replace yourdomain.com with your actual domain.
- Go to Bitly and create an account
- Go to Settings → Developer Settings
- Generate a new access token
- Copy the token for use in the plugin
- In WordPress, go to Settings → WordPress to Threads
- Enter your Threads App ID and Threads App Secret
- Enter your Bitly Access Token (optional)
- Click Save Changes
- Click Authorize with Threads
- Complete the OAuth authorization on Threads
- You'll be redirected back with authorization complete
Once configured, the plugin will automatically post to Threads whenever you publish a new blog post. The plugin will:
- Take your post title and content
- Check if it fits within Threads' 500 character limit
- If too long, truncate the content and add a shortened URL
- Post to your Threads account
- Mark the post as "posted" to prevent duplicates
To post existing blog posts:
- Go to Settings → WordPress to Threads
- Scroll down to Manual Post to Threads
- You'll see a table of your recent posts with their status
- Click Post to Threads next to any unposted content
- Watch for success/error messages
- ✅ Posted: The post has been shared to Threads
- 🟠 Not posted: The post hasn't been shared yet
Threads has a 500 character limit. The plugin handles this intelligently:
- Short posts: Posted as-is with title and content
- Long posts: Content is truncated and a Bitly link is added
- Very long titles: Title is truncated if needed to fit the URL
Example of a truncated post:
My Amazing Blog Post Title
This is the beginning of my blog post content that gets truncated when it's too long...
https://bit.ly/abc123
Enable or disable automatic posting when blog posts are published.
Your App ID from Meta for Developers.
Your App Secret from Meta for Developers (stored securely).
Your numeric Threads user ID (auto-populated during OAuth).
Shows authorization status and provides authorize/deauthorize buttons.
Your Bitly API token for URL shortening (optional).
The plugin creates these endpoints for OAuth compliance:
/?threads_oauth_action=redirect- OAuth callback/?threads_oauth_action=deauthorize- Remove authorization/?threads_oauth_action=data_deletion- GDPR data deletion
Problem: "Failed to authorize" error Solution:
- Check your App ID and App Secret are correct
- Verify redirect URLs are configured in Meta app settings
- Ensure your domain matches exactly (including www/non-www)
Problem: Posts not appearing on Threads Solution:
- Check error logs in WordPress (Tools → Site Health → Info → WordPress Constants → WP_DEBUG_LOG)
- Verify your authorization is still valid
- Try re-authorizing the plugin
Problem: Posts are getting cut off unexpectedly Solution:
- The plugin accounts for URLs in the character count
- Very long titles may be truncated to fit the Bitly link
- Consider shorter, more concise post titles
For issues and feature requests, please check:
- WordPress error logs
- Plugin settings configuration
- OAuth authorization status
The plugin stores:
- Your Threads access token (encrypted)
- Your Threads user ID
- Post metadata indicating what's been shared
- Bitly access token (if provided)
All data can be removed using the deauthorization feature or GDPR endpoints.
- Initial release
- Automatic posting to Threads
- Character limit handling
- URL shortening with Bitly
- Manual posting interface
- OAuth integration
- GDPR compliance
MIT License - see LICENSE file for details
