Appearance
Auto-Share to Timeline
When a user publishes a new listing, this posts an entry to the sitewide timeline on their behalf, with a link-preview card pointing back at the listing. It turns publishing activity into feed content without asking authors to post twice.
Settings
Source Post Types
Tick the Voxel post types that should auto-share. Only listings of those types generate a timeline entry — everything else publishes silently.
Message
| Setting | Description |
|---|---|
| Template | The text of the timeline post |
| Default preview image | Used when a listing has no image of its own |
| First publish only | Share only the first time a listing is published, not on later updates |
The settings panel lists the available placeholders — click one to copy it, then paste it into your template.
HTML entities are decoded in the template, so you can paste emoji directly or use entity codes.
Leave "First publish only" on
With it off, every re-publish of an existing listing posts again. Authors who edit and re-publish a listing several times will flood the feed.
Access Control
Restricts which authors auto-share. Leave a list empty to allow everything in it — an empty Allowed User Roles means all roles qualify, not none.
| Setting | Description |
|---|---|
| Allowed User Roles | Only these roles auto-share |
| Allowed Plans | Checked against listing plan, membership plan, and Voxel pricing plan |
| Allow posts with no detectable plan | Whether authors without any plan still share |
Use this to make auto-sharing a paid perk — restrict to your paid plans and turn off the no-plan allowance.
Rate Limits
| Setting | Protects against |
|---|---|
| Max per request | A bulk import flooding the feed — caps how many entries a single PHP request can create |
| Max per author / hour | One user rapid-publishing to spam the timeline |
Set Max per request before any bulk import
Importing a few thousand listings with no cap would post a timeline entry for every one. The per-request cap is the safeguard — check it before running an import or a migration.
Troubleshooting
Nothing is being shared
- Confirm the post type is ticked under Source Post Types
- Check the author's role against Allowed User Roles
- Check the author's plan against Allowed Plans, and whether Allow posts with no detectable plan is on
- If the listing was published before, First publish only stops a repeat
Only some authors share
Almost always Access Control. Remember an empty list allows everything — so a partially filled Allowed Plans list silently excludes every plan you didn't add.
Which image the preview card uses
In order:
- The listing's featured image.
- A Voxel image field named
cover,cover_image,logo,galleryorimage, in that order. - Any other image or file field the post type defines, in the order they were added — so a gallery called
photosorlisting-imagesis still found. - The Default preview image setting.
- The site logo.
Note that a filled-in logo field takes priority over the gallery. To change the order, use the voxel_toolkit/auto_share/image_field_keys filter.
The preview card shows the site logo instead of the listing's photos
Fixed in 1.9.1. Before that, only the five field names above were checked, and a listing whose gallery field had a different key fell through to the site logo — as did any listing with no featured image whose images finished uploading after the post was shared.
After updating, new shares are correct. To fix a listing already posted, open it and save it — the stored preview is replaced automatically. Previews that were resolved correctly are never overwritten.
The preview card has no image at all
The listing has no image the plugin can use. Set a Default preview image as the fallback.
Developers
Three filters adjust the preview image — see the Developer Reference:
| Filter | Purpose |
|---|---|
voxel_toolkit/auto_share/image_field_keys | Change which field keys are checked first, and in what order |
voxel_toolkit/auto_share/preview_image | Change the image used for a given post |
voxel_toolkit/auto_share/fallback_image | Change the fallback when a post has none |

