=== Employed Jobs Importer ===
Contributors: employed
Tags: jobs, employment, brazil, google-for-jobs, employed
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.12
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Import Brazilian job listings from Employed into WordPress, with Google for Jobs markup.

== Description ==

Employed Jobs Importer pulls job listings from the public Employed feed into your WordPress site. No API key or license is required.

Employed (employed.com.br) is a Brazilian job platform for candidates. Job listings are aggregated from multiple external portals.

**Features**

* Zero-config setup: choose one or more states (UF) or a specific city, then sync.
* City picker uses official IBGE municipality names (cached locally).
* Custom post type `empljoim_job` with archive at `/vagas/`.
* Daily automatic sync (~04:00 site timezone) plus manual sync.
* Google for Jobs `JobPosting` JSON-LD on single job pages.
* Apply button on job pages.
* Shortcode `[employed_jobs]` and styled archive/single templates.

Job data is provided by [Employed](https://employed.com.br/). Application happens on the Employed website.

== Installation ==

1. Install from **Plugins → Add New**, or upload the zip.
2. Activate **Employed Jobs Importer**.
3. Open **Employed Jobs Importer** in the admin sidebar.
4. Choose **State (UF)** (one or more) or **City** scope.
5. For city scope: select UF, wait for the IBGE city list, pick a municipality.
6. Click **Save**, then **Sync now**.

Imported jobs appear at `/vagas/` and via the `[employed_jobs]` shortcode.

== External services ==

This plugin connects to third-party services over HTTPS. No personal visitor data from your site is sent to these services when a visitor only browses pages. Data is sent from your WordPress server during admin configuration, manual sync, scheduled sync, or when loading the city list.

= Employed job feed =

This plugin uses the public Employed distribution API to import job listings into WordPress.

**Service:** [Employed](https://employed.com.br/) — Brazilian job platform that aggregates listings from external portals.

**Used for:** Downloading job listings filtered by state (UF) and optionally by city, then storing them locally as `empljoim_job` posts.

**When data is sent:** On manual sync, on the daily cron (~04:00 site timezone), and during paginated feed requests while sync runs.

**Data sent:** Your server IP address, a `User-Agent` string identifying the plugin and your site URL, an optional `X-EMPLJOIM-Site` header containing `home_url('/')`, and query parameters (`estado`, optional `cidade`, pagination). No WordPress user accounts or site visitor personal data are transmitted.

**Legal:** [Terms of Use](https://employed.com.br/termos-de-uso/), [Privacy Policy](https://employed.com.br/politica-de-privacidade/)

= IBGE municipality API =

This plugin uses the public IBGE (Brazilian Institute of Geography and Statistics) API to populate the city dropdown when you choose city scope.

**Service:** IBGE — `servicodados.ibge.gov.br`

**Used for:** Loading official municipality names for a selected Brazilian state (UF). Results are cached locally on your site for 30 days.

**When data is sent:** When an administrator selects a UF in city scope, clicks **Update list**, or when the city list is loaded in the settings screen.

**Data sent:** The selected UF code in the request URL only. No personal data is sent.

**Legal:** [Privacy Policy](https://www.ibge.gov.br/acesso-informacao/politica-de-privacidade.html), [About IBGE](https://www.ibge.gov.br/)

== Frequently Asked Questions ==

= Do I need an API key? =

No. The plugin uses Employed's public distribution feed. Install, choose your scope, and sync.

= Where does the city list come from? =

From the public IBGE (Brazilian Institute of Geography and Statistics) API. Municipality names are cached on your site for 30 days.

= Where does Apply send users? =

To the canonical job page on employed.com.br. The plugin does not store or expose employer direct application URLs.

= What is the difference between State and City scope? =

**State** imports jobs from one or more selected UFs. **City** imports jobs filtered to a single municipality within one UF.

= How often does sync run? =

A daily cron runs around 04:00 in your site timezone. You can also sync manually from the plugin settings screen.

= Does this plugin affect my theme? =

No theme changes are required. The plugin registers its own post type, templates, schema markup, and shortcode.

== Screenshots ==

1. Plugin settings — scope, sync status, and automatic import notice
2. Job archive at `/vagas/` with card layout
3. Single job page with details sidebar and Apply button

== Changelog ==

= 1.0.12 =
* Plugin Check: prefixed template and uninstall local variables (empljoim_).

= 1.0.11 =
* Internal prefix updated from `bji` to `empljoim` (classes, options, hooks, CPT, taxonomies, meta keys) per WordPress.org review.
* Test sites: settings and cities cache migrate on activation; re-sync to repopulate jobs under CPT `empljoim_job`.

= 1.0.10 =
* Fix unexpected output on activation (UTF-8 BOM removed from PHP files).

= 1.0.9 =
* Renamed to Employed Jobs Importer (`employed-jobs-importer`) per WordPress.org review.
* Fixed JSON-LD escaping; documented external services (Employed + IBGE).
* Plugin URI updated; shortcode is now `[employed_jobs]`.

= 1.0.8 =
* Plugin Check: translators comments placed directly above i18n calls; inline phpcs ignores for required queries.

= 1.0.7 =
* Plugin Check: i18n translators comments, output escaping, input sanitization.
* Tested up to WordPress 7.1; removed discouraged load_plugin_textdomain() call.

= 1.0.6 =
* Initial WordPress.org submission.

== Upgrade Notice ==

= 1.0.12 =
No action required; internal variable prefix cleanup for Plugin Check compliance.

= 1.0.11 =
Prefix rename: run Sync now after updating so jobs appear under the new post type.

= 1.0.9 =
Renamed plugin slug and display name; update shortcode to `[employed_jobs]` if used in content.
