Skip to content

Releases: Mayabytes-LLP/linkedin-job-sync

v1.2.0

Choose a tag to compare

@arafays arafays released this 23 Jul 20:24

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 init callback) that caused "invalid post type" errors and orphaned posts. register_post_type() is now called directly; admin UI hooks moved to admin_init so the destination CPT is guaranteed to be registered first.
  • The plugin's own job_posting CPT 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

Choose a tag to compare

@arafays arafays released this 22 Jul 23:40

What's New

Correctness Fixes

  • bulk_mark_expired no longer hides jobs by setting post_status to draft — expired jobs now correctly stay in listings with badge
  • bulk_resync now normalizes employment_type to ACF select key (was storing human-readable string, breaking frontend display)
  • Sync status values unified to failed throughout (was inconsistent error/failed, causing jobs to be unfilterable)

Spec Compliance

  • location field now stored during sync (was always empty despite being registered)
  • source_url now 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_register removed (was unreachable)
  • Logger UI separated into new AdminLogViewer class (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

Choose a tag to compare

@arafays arafays released this 22 Jul 21:46

LinkedIn Job Sync v1.0.0

First release of the LinkedIn Job Sync WordPress plugin.

Features

  • Custom Post Type: job_posting with 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

  1. Download the linkedin-job-sync-1.0.0.zip file
  2. In WordPress admin, go to Plugins → Add New → Upload Plugin
  3. Upload the zip file and activate
  4. Navigate to LinkedIn Jobs → Settings to configure