Version Description
- Enhancement: Download first-party plugin extension translations
- Enhancement: Add integration to Yoast SEO schema (@jdevalk)
- Fix: Make salary placeholder string translatable
Download this release
Release Info
Developer | jakeom |
Plugin | WP Job Manager |
Version | 1.39.0 |
Comparing to | |
See all releases |
Code changes from version 1.38.1 to 1.39.0
- changelog.txt +5 -0
- includes/3rd-party/yoast.php +16 -0
- includes/class-wp-job-manager-post-types.php +1 -1
- includes/forms/class-wp-job-manager-form-submit-job.php +1 -1
- includes/helper/class-wp-job-manager-helper-language-packs.php +189 -0
- includes/helper/class-wp-job-manager-helper.php +57 -7
- languages/wp-job-manager.pot +19 -14
- readme.txt +7 -2
- wp-job-manager.php +2 -2
changelog.txt
CHANGED
@@ -1,3 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
1 |
= 1.38.1 =
|
2 |
* Enhancement: Added support for WordPress.com marketplace
|
3 |
* Change: Only perform application field validation when required or not empty (@tripflex)
|
1 |
+
= 1.39.0 =
|
2 |
+
* Enhancement: Download first-party plugin extension translations
|
3 |
+
* Enhancement: Add integration to Yoast SEO schema (@jdevalk)
|
4 |
+
* Fix: Make salary placeholder string translatable
|
5 |
+
|
6 |
= 1.38.1 =
|
7 |
* Enhancement: Added support for WordPress.com marketplace
|
8 |
* Change: Only perform application field validation when required or not empty (@tripflex)
|
includes/3rd-party/yoast.php
CHANGED
@@ -27,3 +27,19 @@ function wpjm_yoast_skip_filled_job_listings( $url, $type, $post ) {
|
|
27 |
return $url;
|
28 |
}
|
29 |
add_action( 'wpseo_sitemap_entry', 'wpjm_yoast_skip_filled_job_listings', 10, 3 );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
return $url;
|
28 |
}
|
29 |
add_action( 'wpseo_sitemap_entry', 'wpjm_yoast_skip_filled_job_listings', 10, 3 );
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Links schema to Yoast SEO schema if Yoast SEO is loaded.
|
33 |
+
*
|
34 |
+
* @param array $data The schema data.
|
35 |
+
*
|
36 |
+
* @return array The schema data.
|
37 |
+
*/
|
38 |
+
function wpjm_link_schema_to_yoast_schema( $data ) {
|
39 |
+
if ( function_exists( 'YoastSEO' ) ) {
|
40 |
+
$data['mainEntityOfPage'] = [ '@id' => YoastSEO()->meta->for_current_page()->canonical ];
|
41 |
+
$data['identifier']['value'] = YoastSEO()->meta->for_current_page()->canonical;
|
42 |
+
}
|
43 |
+
return $data;
|
44 |
+
}
|
45 |
+
add_filter( 'wpjm_get_job_listing_structured_data', 'wpjm_link_schema_to_yoast_schema' );
|
includes/class-wp-job-manager-post-types.php
CHANGED
@@ -1599,7 +1599,7 @@ class WP_Job_Manager_Post_Types {
|
|
1599 |
'_job_salary' => [
|
1600 |
'label' => __( 'Salary', 'wp-job-manager' ),
|
1601 |
'type' => 'text',
|
1602 |
-
'placeholder' => 'e.g. 20000',
|
1603 |
'priority' => 13,
|
1604 |
'description' => __( 'Add a salary field, this field is optional.', 'wp-job-manager' ),
|
1605 |
'data_type' => 'string',
|
1599 |
'_job_salary' => [
|
1600 |
'label' => __( 'Salary', 'wp-job-manager' ),
|
1601 |
'type' => 'text',
|
1602 |
+
'placeholder' => __( 'e.g. 20000', 'wp-job-manager' ),
|
1603 |
'priority' => 13,
|
1604 |
'description' => __( 'Add a salary field, this field is optional.', 'wp-job-manager' ),
|
1605 |
'data_type' => 'string',
|
includes/forms/class-wp-job-manager-form-submit-job.php
CHANGED
@@ -269,7 +269,7 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
|
|
269 |
'label' => __( 'Salary', 'wp-job-manager' ),
|
270 |
'type' => 'text',
|
271 |
'required' => false,
|
272 |
-
'placeholder' => 'e.g. 20000',
|
273 |
'priority' => 8,
|
274 |
],
|
275 |
'job_salary_currency' => [
|
269 |
'label' => __( 'Salary', 'wp-job-manager' ),
|
270 |
'type' => 'text',
|
271 |
'required' => false,
|
272 |
+
'placeholder' => __( 'e.g. 20000', 'wp-job-manager' ),
|
273 |
'priority' => 8,
|
274 |
],
|
275 |
'job_salary_currency' => [
|
includes/helper/class-wp-job-manager-helper-language-packs.php
ADDED
@@ -0,0 +1,189 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* File containing the class WP_Job_Manager_Helper_Language_Packs.
|
4 |
+
*
|
5 |
+
* @package wp-job-manager
|
6 |
+
*/
|
7 |
+
|
8 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
+
exit;
|
10 |
+
}
|
11 |
+
|
12 |
+
/**
|
13 |
+
* WP_Job_Manager_Helper_Language_Packs
|
14 |
+
*/
|
15 |
+
class WP_Job_Manager_Helper_Language_Packs {
|
16 |
+
const TRANSLATION_UPDATES_URL = 'https://translate.wordpress.com/api/translations-updates/wp-job-manager';
|
17 |
+
const REMOTE_PACKAGE_TRANSIENT = 'wp-job-manager-translations-';
|
18 |
+
|
19 |
+
/**
|
20 |
+
* The plugin versions, keyed with the plugin slug.
|
21 |
+
*
|
22 |
+
* @var string[]
|
23 |
+
*/
|
24 |
+
private $plugin_versions;
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Locales to manage language packs for.
|
28 |
+
*
|
29 |
+
* @var string[]
|
30 |
+
*/
|
31 |
+
private $locales;
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Request cache of the language pack updates available.
|
35 |
+
*
|
36 |
+
* @var array|null
|
37 |
+
*/
|
38 |
+
private $language_pack_updates_cache;
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Class constructor.
|
42 |
+
*
|
43 |
+
* @param array[] $plugin_versions Plugin versions, keyed by plugin slug.
|
44 |
+
* @param string[] $locales Locales to manage language packs for.
|
45 |
+
*/
|
46 |
+
public function __construct( array $plugin_versions, array $locales ) {
|
47 |
+
$this->plugin_versions = $plugin_versions;
|
48 |
+
$this->locales = $locales;
|
49 |
+
|
50 |
+
if ( empty( $plugin_versions ) || empty( $locales ) ) {
|
51 |
+
return;
|
52 |
+
}
|
53 |
+
|
54 |
+
add_filter( 'site_transient_update_plugins', [ $this, 'add_updated_translations' ] );
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Adds the plugin's language pack updates to the `update_plugins` transient.
|
59 |
+
*
|
60 |
+
* @internal
|
61 |
+
*
|
62 |
+
* @param \stdClass $transient Current value of `update_plugins` transient.
|
63 |
+
* @return \stdClass
|
64 |
+
*/
|
65 |
+
public function add_updated_translations( $transient ) {
|
66 |
+
if ( empty( $transient ) ) {
|
67 |
+
return $transient;
|
68 |
+
}
|
69 |
+
|
70 |
+
/**
|
71 |
+
* Allows for disabling language packs downloading.
|
72 |
+
*
|
73 |
+
* @since 1.39.0
|
74 |
+
*
|
75 |
+
* @param bool $disable_language_packs Whether to disable language packs. Default false.
|
76 |
+
*/
|
77 |
+
if ( apply_filters( 'wp_job_manager_helper_disable_language_packs', false ) ) {
|
78 |
+
return $transient;
|
79 |
+
}
|
80 |
+
|
81 |
+
$translations = $this->get_language_pack_updates();
|
82 |
+
$transient->translations = array_merge( $transient->translations ?? [], $translations );
|
83 |
+
|
84 |
+
return $transient;
|
85 |
+
}
|
86 |
+
|
87 |
+
/**
|
88 |
+
* Get translations updates from our translation pack server.
|
89 |
+
*
|
90 |
+
* @return array Update data {plugin_slug => data}
|
91 |
+
*/
|
92 |
+
private function get_language_pack_updates() {
|
93 |
+
if ( ! is_null( $this->language_pack_updates_cache ) ) {
|
94 |
+
return $this->language_pack_updates_cache;
|
95 |
+
}
|
96 |
+
|
97 |
+
if ( empty( $this->plugin_versions ) || empty( $this->locales ) ) {
|
98 |
+
return [];
|
99 |
+
}
|
100 |
+
|
101 |
+
// Check if we've cached this in the last day.
|
102 |
+
$transient_key = self::REMOTE_PACKAGE_TRANSIENT . md5( wp_json_encode( [ $this->plugin_versions, $this->locales ] ) );
|
103 |
+
$data = get_site_transient( $transient_key );
|
104 |
+
if ( false !== $data && is_array( $data ) ) {
|
105 |
+
return $this->parse_language_pack_translations( $data );
|
106 |
+
}
|
107 |
+
|
108 |
+
// Set the timeout for the request.
|
109 |
+
$timeout = 5;
|
110 |
+
if ( wp_doing_cron() ) {
|
111 |
+
$timeout = 30;
|
112 |
+
}
|
113 |
+
|
114 |
+
$plugins = [];
|
115 |
+
foreach ( $this->plugin_versions as $slug => $plugin_version ) {
|
116 |
+
$plugins[ $slug ] = [ 'version' => $plugin_version ];
|
117 |
+
}
|
118 |
+
|
119 |
+
$request_body = [
|
120 |
+
'locales' => $this->locales,
|
121 |
+
'plugins' => $plugins,
|
122 |
+
];
|
123 |
+
|
124 |
+
$raw_response = wp_remote_post(
|
125 |
+
self::TRANSLATION_UPDATES_URL,
|
126 |
+
[
|
127 |
+
'body' => wp_json_encode( $request_body ),
|
128 |
+
'headers' => [ 'Content-Type: application/json' ],
|
129 |
+
'timeout' => $timeout,
|
130 |
+
]
|
131 |
+
);
|
132 |
+
|
133 |
+
// Something unexpected happened on the translation server side.
|
134 |
+
$response_code = wp_remote_retrieve_response_code( $raw_response );
|
135 |
+
if ( 200 !== $response_code ) {
|
136 |
+
return [];
|
137 |
+
}
|
138 |
+
|
139 |
+
$response = json_decode( wp_remote_retrieve_body( $raw_response ), true );
|
140 |
+
// API error, api returned but something was wrong.
|
141 |
+
if ( array_key_exists( 'success', $response ) && false === $response['success'] ) {
|
142 |
+
return [];
|
143 |
+
}
|
144 |
+
|
145 |
+
$this->language_pack_updates_cache = $this->parse_language_pack_translations( $response['data'] );
|
146 |
+
set_site_transient( $transient_key, $response['data'], DAY_IN_SECONDS );
|
147 |
+
|
148 |
+
return $this->language_pack_updates_cache;
|
149 |
+
}
|
150 |
+
|
151 |
+
/**
|
152 |
+
* Parse the language pack translations.
|
153 |
+
*
|
154 |
+
* @param array $update_data Update data from translate.wordpress.com.
|
155 |
+
*
|
156 |
+
* @return array
|
157 |
+
*/
|
158 |
+
private function parse_language_pack_translations( $update_data ) {
|
159 |
+
$installed_translations = wp_get_installed_translations( 'plugins' );
|
160 |
+
$translations = [];
|
161 |
+
|
162 |
+
foreach ( $update_data as $plugin_name => $language_packs ) {
|
163 |
+
foreach ( $language_packs as $language_pack ) {
|
164 |
+
// Maybe we have this language pack already installed so lets check revision date.
|
165 |
+
if ( array_key_exists( $plugin_name, $installed_translations ) && array_key_exists( $language_pack['wp_locale'], $installed_translations[ $plugin_name ] ) ) {
|
166 |
+
$installed_translation_revision_time = new \DateTime( $installed_translations[ $plugin_name ][ $language_pack['wp_locale'] ]['PO-Revision-Date'] );
|
167 |
+
$new_translation_revision_time = new \DateTime( $language_pack['last_modified'] );
|
168 |
+
|
169 |
+
// Skip if translation language pack is not newer than what is installed already.
|
170 |
+
if ( $new_translation_revision_time <= $installed_translation_revision_time ) {
|
171 |
+
continue;
|
172 |
+
}
|
173 |
+
}
|
174 |
+
|
175 |
+
$translations[] = [
|
176 |
+
'type' => 'plugin',
|
177 |
+
'slug' => $plugin_name,
|
178 |
+
'language' => $language_pack['wp_locale'],
|
179 |
+
'version' => $language_pack['version'],
|
180 |
+
'updated' => $language_pack['last_modified'],
|
181 |
+
'package' => $language_pack['package'],
|
182 |
+
'autoupdate' => true,
|
183 |
+
];
|
184 |
+
}
|
185 |
+
}
|
186 |
+
|
187 |
+
return $translations;
|
188 |
+
}
|
189 |
+
}
|
includes/helper/class-wp-job-manager-helper.php
CHANGED
@@ -30,6 +30,13 @@ class WP_Job_Manager_Helper {
|
|
30 |
*/
|
31 |
protected $api;
|
32 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
/**
|
34 |
* The single instance of the class.
|
35 |
*
|
@@ -66,6 +73,7 @@ class WP_Job_Manager_Helper {
|
|
66 |
public function init() {
|
67 |
include_once dirname( __FILE__ ) . '/class-wp-job-manager-helper-options.php';
|
68 |
include_once dirname( __FILE__ ) . '/class-wp-job-manager-helper-api.php';
|
|
|
69 |
|
70 |
$this->api = WP_Job_Manager_Helper_API::instance();
|
71 |
|
@@ -85,11 +93,55 @@ class WP_Job_Manager_Helper {
|
|
85 |
* Initializes admin-only actions.
|
86 |
*/
|
87 |
public function admin_init() {
|
|
|
88 |
add_action( 'plugin_action_links', [ $this, 'plugin_links' ], 10, 2 );
|
89 |
add_action( 'admin_notices', [ $this, 'licence_error_notices' ] );
|
90 |
$this->handle_admin_request();
|
91 |
}
|
92 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
/**
|
94 |
* Handles special tasks on admin requests.
|
95 |
*/
|
@@ -171,22 +223,20 @@ class WP_Job_Manager_Helper {
|
|
171 |
*/
|
172 |
private function get_plugin_version( $plugin_filename ) {
|
173 |
$plugin_data = $this->get_licence_managed_plugin( $plugin_filename );
|
174 |
-
if ( ! $plugin_data ) {
|
175 |
return false;
|
176 |
}
|
|
|
177 |
$product_slug = $plugin_data['_product_slug'];
|
178 |
$licence = $this->get_plugin_licence( $product_slug );
|
179 |
-
if ( ! $licence || empty( $licence['licence_key'] ) ) {
|
180 |
-
return false;
|
181 |
-
}
|
182 |
|
183 |
$response = $this->api->plugin_update_check(
|
184 |
[
|
185 |
'plugin_name' => $plugin_data['Name'],
|
186 |
'version' => $plugin_data['Version'],
|
187 |
'api_product_id' => $product_slug,
|
188 |
-
'licence_key' => $licence['licence_key'],
|
189 |
-
'email' => $licence['email'],
|
190 |
]
|
191 |
);
|
192 |
|
@@ -594,7 +644,7 @@ class WP_Job_Manager_Helper {
|
|
594 |
}
|
595 |
|
596 |
$errors = ! empty( $response['errors'] ) ? $response['errors'] : [];
|
597 |
-
$allowed_errors = [ 'no_activation', 'expired_key', 'expiring_soon' ];
|
598 |
$ignored_errors = array_diff( array_keys( $errors ), $allowed_errors );
|
599 |
|
600 |
foreach ( $ignored_errors as $key ) {
|
30 |
*/
|
31 |
protected $api;
|
32 |
|
33 |
+
/**
|
34 |
+
* Language Pack helper.
|
35 |
+
*
|
36 |
+
* @var WP_Job_Manager_Helper_Language_Packs
|
37 |
+
*/
|
38 |
+
private $language_pack_helper;
|
39 |
+
|
40 |
/**
|
41 |
* The single instance of the class.
|
42 |
*
|
73 |
public function init() {
|
74 |
include_once dirname( __FILE__ ) . '/class-wp-job-manager-helper-options.php';
|
75 |
include_once dirname( __FILE__ ) . '/class-wp-job-manager-helper-api.php';
|
76 |
+
include_once dirname( __FILE__ ) . '/class-wp-job-manager-helper-language-packs.php';
|
77 |
|
78 |
$this->api = WP_Job_Manager_Helper_API::instance();
|
79 |
|
93 |
* Initializes admin-only actions.
|
94 |
*/
|
95 |
public function admin_init() {
|
96 |
+
$this->load_language_pack_helper();
|
97 |
add_action( 'plugin_action_links', [ $this, 'plugin_links' ], 10, 2 );
|
98 |
add_action( 'admin_notices', [ $this, 'licence_error_notices' ] );
|
99 |
$this->handle_admin_request();
|
100 |
}
|
101 |
|
102 |
+
/**
|
103 |
+
* Load the language pack helper.
|
104 |
+
*/
|
105 |
+
private function load_language_pack_helper() {
|
106 |
+
if ( $this->language_pack_helper ) {
|
107 |
+
return;
|
108 |
+
}
|
109 |
+
|
110 |
+
$this->language_pack_helper = new WP_Job_Manager_Helper_Language_Packs( $this->get_plugin_versions(), $this->get_site_locales() );
|
111 |
+
}
|
112 |
+
|
113 |
+
/**
|
114 |
+
* Get the versions for the installed managed plugins, keyed with the plugin slug.
|
115 |
+
*
|
116 |
+
* @return string[]
|
117 |
+
*/
|
118 |
+
private function get_plugin_versions() {
|
119 |
+
return array_filter(
|
120 |
+
array_map(
|
121 |
+
function( $plugin ) {
|
122 |
+
return $plugin['Version'];
|
123 |
+
},
|
124 |
+
$this->get_installed_plugins( false )
|
125 |
+
)
|
126 |
+
);
|
127 |
+
}
|
128 |
+
|
129 |
+
/**
|
130 |
+
* Get the locales used in the site.
|
131 |
+
*
|
132 |
+
* @return string[]
|
133 |
+
*/
|
134 |
+
private function get_site_locales() {
|
135 |
+
$locales = array_values( get_available_languages() );
|
136 |
+
|
137 |
+
/** This action is documented in WordPress core's wp-includes/update.php */
|
138 |
+
// phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound
|
139 |
+
$locales = apply_filters( 'plugins_update_check_locales', $locales );
|
140 |
+
$locales = array_unique( $locales );
|
141 |
+
|
142 |
+
return $locales;
|
143 |
+
}
|
144 |
+
|
145 |
/**
|
146 |
* Handles special tasks on admin requests.
|
147 |
*/
|
223 |
*/
|
224 |
private function get_plugin_version( $plugin_filename ) {
|
225 |
$plugin_data = $this->get_licence_managed_plugin( $plugin_filename );
|
226 |
+
if ( ! $plugin_data || empty( $plugin_data['_product_slug'] ) ) {
|
227 |
return false;
|
228 |
}
|
229 |
+
|
230 |
$product_slug = $plugin_data['_product_slug'];
|
231 |
$licence = $this->get_plugin_licence( $product_slug );
|
|
|
|
|
|
|
232 |
|
233 |
$response = $this->api->plugin_update_check(
|
234 |
[
|
235 |
'plugin_name' => $plugin_data['Name'],
|
236 |
'version' => $plugin_data['Version'],
|
237 |
'api_product_id' => $product_slug,
|
238 |
+
'licence_key' => $licence['licence_key'] ?? null,
|
239 |
+
'email' => $licence['email'] ?? null,
|
240 |
]
|
241 |
);
|
242 |
|
644 |
}
|
645 |
|
646 |
$errors = ! empty( $response['errors'] ) ? $response['errors'] : [];
|
647 |
+
$allowed_errors = [ 'no_activation', 'expired_key', 'expiring_soon', 'update_available' ];
|
648 |
$ignored_errors = array_diff( array_keys( $errors ), $allowed_errors );
|
649 |
|
650 |
foreach ( $ignored_errors as $key ) {
|
languages/wp-job-manager.pot
CHANGED
@@ -2,16 +2,16 @@
|
|
2 |
# This file is distributed under the GPL2+.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: WP Job Manager 1.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-job-manager/\n"
|
7 |
"Last-Translator: \n"
|
8 |
"Language-Team: \n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"POT-Creation-Date: 2022-
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
-
"X-Generator: WP-CLI 2.
|
15 |
"X-Domain: wp-job-manager\n"
|
16 |
|
17 |
#. Plugin Name of the plugin
|
@@ -1556,6 +1556,11 @@ msgstr ""
|
|
1556 |
msgid "Select if this is a remote position."
|
1557 |
msgstr ""
|
1558 |
|
|
|
|
|
|
|
|
|
|
|
1559 |
#: includes/class-wp-job-manager-post-types.php:1604
|
1560 |
msgid "Add a salary field, this field is optional."
|
1561 |
msgstr ""
|
@@ -1917,42 +1922,42 @@ msgstr ""
|
|
1917 |
msgid "Draft was saved. Job listing drafts can be resumed from the <a href=\"%s\">job dashboard</a>."
|
1918 |
msgstr ""
|
1919 |
|
1920 |
-
#: includes/helper/class-wp-job-manager-helper.php:
|
1921 |
msgid "Manage License (Requires Attention)"
|
1922 |
msgstr ""
|
1923 |
|
1924 |
-
#: includes/helper/class-wp-job-manager-helper.php:
|
1925 |
-
#: tests/php/tests/includes/helper/test_class.wp-job-manager-helper.php:
|
1926 |
msgid "Manage License"
|
1927 |
msgstr ""
|
1928 |
|
1929 |
-
#: includes/helper/class-wp-job-manager-helper.php:
|
1930 |
#: includes/helper/views/html-licences.php:76
|
1931 |
-
#: tests/php/tests/includes/helper/test_class.wp-job-manager-helper.php:
|
1932 |
msgid "Activate License"
|
1933 |
msgstr ""
|
1934 |
|
1935 |
-
#: includes/helper/class-wp-job-manager-helper.php:
|
1936 |
msgid "Please enter a valid license key and email address in order to activate this plugin's license."
|
1937 |
msgstr ""
|
1938 |
|
1939 |
-
#: includes/helper/class-wp-job-manager-helper.php:
|
1940 |
msgid "Connection failed to the License Key API server - possible server issue."
|
1941 |
msgstr ""
|
1942 |
|
1943 |
-
#: includes/helper/class-wp-job-manager-helper.php:
|
1944 |
msgid "Plugin license has been activated."
|
1945 |
msgstr ""
|
1946 |
|
1947 |
-
#: includes/helper/class-wp-job-manager-helper.php:
|
1948 |
msgid "An unknown error occurred while attempting to activate the license"
|
1949 |
msgstr ""
|
1950 |
|
1951 |
-
#: includes/helper/class-wp-job-manager-helper.php:
|
1952 |
msgid "license is not active."
|
1953 |
msgstr ""
|
1954 |
|
1955 |
-
#: includes/helper/class-wp-job-manager-helper.php:
|
1956 |
msgid "Plugin license has been deactivated."
|
1957 |
msgstr ""
|
1958 |
|
2 |
# This file is distributed under the GPL2+.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: WP Job Manager 1.39.0\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-job-manager/\n"
|
7 |
"Last-Translator: \n"
|
8 |
"Language-Team: \n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"POT-Creation-Date: 2022-12-13T10:58:37+00:00\n"
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
+
"X-Generator: WP-CLI 2.6.0\n"
|
15 |
"X-Domain: wp-job-manager\n"
|
16 |
|
17 |
#. Plugin Name of the plugin
|
1556 |
msgid "Select if this is a remote position."
|
1557 |
msgstr ""
|
1558 |
|
1559 |
+
#: includes/class-wp-job-manager-post-types.php:1602
|
1560 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:272
|
1561 |
+
msgid "e.g. 20000"
|
1562 |
+
msgstr ""
|
1563 |
+
|
1564 |
#: includes/class-wp-job-manager-post-types.php:1604
|
1565 |
msgid "Add a salary field, this field is optional."
|
1566 |
msgstr ""
|
1922 |
msgid "Draft was saved. Job listing drafts can be resumed from the <a href=\"%s\">job dashboard</a>."
|
1923 |
msgstr ""
|
1924 |
|
1925 |
+
#: includes/helper/class-wp-job-manager-helper.php:329
|
1926 |
msgid "Manage License (Requires Attention)"
|
1927 |
msgstr ""
|
1928 |
|
1929 |
+
#: includes/helper/class-wp-job-manager-helper.php:332
|
1930 |
+
#: tests/php/tests/includes/helper/test_class.wp-job-manager-helper.php:243
|
1931 |
msgid "Manage License"
|
1932 |
msgstr ""
|
1933 |
|
1934 |
+
#: includes/helper/class-wp-job-manager-helper.php:335
|
1935 |
#: includes/helper/views/html-licences.php:76
|
1936 |
+
#: tests/php/tests/includes/helper/test_class.wp-job-manager-helper.php:259
|
1937 |
msgid "Activate License"
|
1938 |
msgstr ""
|
1939 |
|
1940 |
+
#: includes/helper/class-wp-job-manager-helper.php:544
|
1941 |
msgid "Please enter a valid license key and email address in order to activate this plugin's license."
|
1942 |
msgstr ""
|
1943 |
|
1944 |
+
#: includes/helper/class-wp-job-manager-helper.php:576
|
1945 |
msgid "Connection failed to the License Key API server - possible server issue."
|
1946 |
msgstr ""
|
1947 |
|
1948 |
+
#: includes/helper/class-wp-job-manager-helper.php:585
|
1949 |
msgid "Plugin license has been activated."
|
1950 |
msgstr ""
|
1951 |
|
1952 |
+
#: includes/helper/class-wp-job-manager-helper.php:588
|
1953 |
msgid "An unknown error occurred while attempting to activate the license"
|
1954 |
msgstr ""
|
1955 |
|
1956 |
+
#: includes/helper/class-wp-job-manager-helper.php:608
|
1957 |
msgid "license is not active."
|
1958 |
msgstr ""
|
1959 |
|
1960 |
+
#: includes/helper/class-wp-job-manager-helper.php:624
|
1961 |
msgid "Plugin license has been deactivated."
|
1962 |
msgstr ""
|
1963 |
|
readme.txt
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
Contributors: mikejolley, automattic, adamkheckler, alexsanford1, annezazu, cena, chaselivingston, csonnek, davor.altman, donnapep, donncha, drawmyface, erania-pinnera, fjorgemota, jacobshere, jakeom, jeherve, jenhooks, jgs, jonryan, kraftbj, lamdayap, lschuyler, macmanx, nancythanki, orangesareorange, rachelsquirrel, renathoc, ryancowles, richardmtl, scarstocea
|
3 |
Tags: job manager, job listing, job board, job management, job lists, job list, job, jobs, company, hiring, employment, employer, employees, candidate, freelance, internship, job listings, positions, board, application, hiring, listing, manager, recruiting, recruitment, talent
|
4 |
Requires at least: 5.8
|
5 |
-
Tested up to: 6.
|
6 |
Requires PHP: 7.2
|
7 |
-
Stable tag: 1.
|
8 |
License: GPLv3
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
@@ -153,6 +153,11 @@ It then creates a database based on the parameters passed to it.
|
|
153 |
|
154 |
== Changelog ==
|
155 |
|
|
|
|
|
|
|
|
|
|
|
156 |
= 1.38.1 =
|
157 |
* Enhancement: Added support for WordPress.com marketplace
|
158 |
* Change: Only perform application field validation when required or not empty (@tripflex)
|
2 |
Contributors: mikejolley, automattic, adamkheckler, alexsanford1, annezazu, cena, chaselivingston, csonnek, davor.altman, donnapep, donncha, drawmyface, erania-pinnera, fjorgemota, jacobshere, jakeom, jeherve, jenhooks, jgs, jonryan, kraftbj, lamdayap, lschuyler, macmanx, nancythanki, orangesareorange, rachelsquirrel, renathoc, ryancowles, richardmtl, scarstocea
|
3 |
Tags: job manager, job listing, job board, job management, job lists, job list, job, jobs, company, hiring, employment, employer, employees, candidate, freelance, internship, job listings, positions, board, application, hiring, listing, manager, recruiting, recruitment, talent
|
4 |
Requires at least: 5.8
|
5 |
+
Tested up to: 6.1
|
6 |
Requires PHP: 7.2
|
7 |
+
Stable tag: 1.39.0
|
8 |
License: GPLv3
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
153 |
|
154 |
== Changelog ==
|
155 |
|
156 |
+
= 1.39.0 =
|
157 |
+
* Enhancement: Download first-party plugin extension translations
|
158 |
+
* Enhancement: Add integration to Yoast SEO schema (@jdevalk)
|
159 |
+
* Fix: Make salary placeholder string translatable
|
160 |
+
|
161 |
= 1.38.1 =
|
162 |
* Enhancement: Added support for WordPress.com marketplace
|
163 |
* Change: Only perform application field validation when required or not empty (@tripflex)
|
wp-job-manager.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Plugin Name: WP Job Manager
|
4 |
* Plugin URI: https://wpjobmanager.com/
|
5 |
* Description: Manage job listings from the WordPress admin panel, and allow users to post jobs directly to your site.
|
6 |
-
* Version: 1.
|
7 |
* Author: Automattic
|
8 |
* Author URI: https://wpjobmanager.com/
|
9 |
* Requires at least: 5.8
|
@@ -21,7 +21,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
21 |
}
|
22 |
|
23 |
// Define constants.
|
24 |
-
define( 'JOB_MANAGER_VERSION', '1.
|
25 |
define( 'JOB_MANAGER_PLUGIN_DIR', untrailingslashit( plugin_dir_path( __FILE__ ) ) );
|
26 |
define( 'JOB_MANAGER_PLUGIN_URL', untrailingslashit( plugins_url( basename( plugin_dir_path( __FILE__ ) ), basename( __FILE__ ) ) ) );
|
27 |
define( 'JOB_MANAGER_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
|
3 |
* Plugin Name: WP Job Manager
|
4 |
* Plugin URI: https://wpjobmanager.com/
|
5 |
* Description: Manage job listings from the WordPress admin panel, and allow users to post jobs directly to your site.
|
6 |
+
* Version: 1.39.0
|
7 |
* Author: Automattic
|
8 |
* Author URI: https://wpjobmanager.com/
|
9 |
* Requires at least: 5.8
|
21 |
}
|
22 |
|
23 |
// Define constants.
|
24 |
+
define( 'JOB_MANAGER_VERSION', '1.39.0' );
|
25 |
define( 'JOB_MANAGER_PLUGIN_DIR', untrailingslashit( plugin_dir_path( __FILE__ ) ) );
|
26 |
define( 'JOB_MANAGER_PLUGIN_URL', untrailingslashit( plugins_url( basename( plugin_dir_path( __FILE__ ) ), basename( __FILE__ ) ) ) );
|
27 |
define( 'JOB_MANAGER_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
|