Releases: Mayabytes-LLP/linkedin-job-sync
Release list
v1.2.0
What's New
Configurable destination post type
Synced LinkedIn jobs can now land in any admin-configurable public custom post type (default job_posting, e.g. career), so sites can reuse an existing CPT instead of the plugin's own. Configure it under LinkedIn Job Sync → Settings → Destination Post Type. Rewrite rules are flushed automatically when the destination changes.
Plugin-owned ACF field names
LinkedIn data is now stored under linkedin_-prefixed ACF field names (linkedin_location, linkedin_url, linkedin_job_id, …) so it never collides with a destination CPT's own native fields. The public location filter URL parameter remains location — only the stored field name changed.
Settings UI revamp
- Single unified Save Settings form replacing the per-section submits
- Searchable multi-select checkbox dropdowns for category & tag mapping
- Parent menu page now redirects to the settings sub-page
- Success notice on save
Bug fixes
- Fixed a CPT registration bug (nested
initcallback) that caused "invalid post type" errors and orphaned posts.register_post_type()is now called directly; admin UI hooks moved toadmin_initso the destination CPT is guaranteed to be registered first. - The plugin's own
job_postingCPT is hidden from the admin menu when it is not the configured destination.
Docs
- Added ADR index to
CONTEXT.md(ADR-0001 … ADR-0004). ADR-0004 (configurable destination) amends ADR-0002.
Requirements
- WordPress 6.0+
- PHP 8.0+
- Advanced Custom Fields (ACF) plugin
Install: download linkedin-job-sync-1.2.0.zip below and upload it via Plugins → Add New → Upload Plugin in WordPress.
v1.1.0
What's New
Correctness Fixes
bulk_mark_expiredno longer hides jobs by settingpost_statusto draft — expired jobs now correctly stay in listings with badgebulk_resyncnow normalizesemployment_typeto ACF select key (was storing human-readable string, breaking frontend display)- Sync status values unified to
failedthroughout (was inconsistenterror/failed, causing jobs to be unfilterable)
Spec Compliance
locationfield now stored during sync (was always empty despite being registered)source_urlnow populated during sync (was always empty despite being registered)- All User Story 18 requirements now met (title, description, location, employment type)
Code Quality
- HTTP fetch consolidated — removed duplicate implementation, now uses LinkedInParser's robust version
- LinkedInParser now uses project Logger instead of direct
error_log() - Bulk status operations extracted to shared
bulk_set_sync_status()method - Dead
spl_autoload_registerremoved (was unreachable) - Logger UI separated into new
AdminLogViewerclass (single responsibility) - Form defaults consolidated to single source of truth
- Select-dropdown rendering consolidated to shared
render_select_field()helper - Log-level detection consolidated to shared
Logger::get_log_level()method
Bug Fixes
- Fixed fatal error:
->register()called nonexistent method - Fixed fatal error:
send_json_error()→wp_send_json_error() - Removed duplicate logs submenu registration
Requirements
- WordPress 6.0+
- PHP 8.0+
- ACF plugin
v1.0.0
LinkedIn Job Sync v1.0.0
First release of the LinkedIn Job Sync WordPress plugin.
Features
- Custom Post Type:
job_postingwith ACF metadata fields - LinkedIn Parser: JSON-LD, meta tags, and DOM/XPath fallbacks
- Sync Engine: Deduplication, rate limiting, rolling sync (3 sources, 50 jobs/cycle)
- Admin Settings: LinkedIn URL management with category/tag mapping
- Test Connection: AJAX preview of jobs before saving URLs
- Dashboard Widget: Sync status, manual trigger, recent activity
- Cron Scheduler: Hourly, every 6 hours, daily, or manual only
- Frontend Display:
[linkedin_jobs]shortcode + Gutenberg block - AJAX Filtering: Category, tag, employment type, location, keyword search
- Form Integration: CF7, WPForms, Gravity Forms, Ninja Forms support
- Expired Job Handling: Badges with show/hide control
- Bulk Operations: Mark expired, mark active, re-sync, delete
- Logging: File-based logs with rotation and admin viewer
Requirements
- WordPress 6.0+
- PHP 8.0+
- Advanced Custom Fields (ACF) plugin
Installation
- Download the
linkedin-job-sync-1.0.0.zipfile - In WordPress admin, go to Plugins → Add New → Upload Plugin
- Upload the zip file and activate
- Navigate to LinkedIn Jobs → Settings to configure