Version Description
- Enhancement: New filter to skip validation for application field.
- Enhancement: New method for clearing fields.
- Fix: Improve TwentyTwenty theme compatibility (@JuanchoPestana)
- Fix: Issue in RSS feed with empty query parameters.
- Fix: Issue on Jobs page with empty query parameters.
- Fix: Conflict with search query parameters on Jobs page.
- Fix: Ensuring hidden jobs do not display in RSS feed.
- Fix: Image validation when posting a job.
- Fix: JS error in file upload.
- Fix: Removed extra whitespace in textarea settings fields.
- Fix: Several untranslatable strings are now translatable.
- Fix: CC header in emails.
- Fix: Search category query sanitization.
- Fix: Remove PHP notices. (@truongwp)
Download this release
Release Info
Developer | alexsanford1 |
Plugin | WP Job Manager |
Version | 1.34.2 |
Comparing to | |
See all releases |
Code changes from version 1.34.1 to 1.34.2
- assets/js/ajax-file-upload.min.js +1 -1
- changelog.txt +16 -0
- includes/abstracts/abstract-wp-job-manager-form.php +7 -0
- includes/admin/class-wp-job-manager-cpt.php +1 -1
- includes/admin/class-wp-job-manager-settings.php +1 -3
- includes/admin/class-wp-job-manager-setup.php +1 -1
- includes/admin/views/html-admin-setup-step-3.php +1 -1
- includes/class-wp-job-manager-dependency-checker.php +1 -1
- includes/class-wp-job-manager-email-notifications.php +6 -3
- includes/class-wp-job-manager-geocode.php +1 -1
- includes/class-wp-job-manager-post-types.php +25 -4
- includes/class-wp-job-manager-shortcodes.php +18 -10
- includes/class-wp-job-manager-widget.php +1 -1
- includes/forms/class-wp-job-manager-form-submit-job.php +35 -19
- includes/helper/views/html-licence-key-error.php +2 -1
- includes/helper/views/html-licence-key-notice.php +2 -1
- includes/helper/views/html-licences.php +4 -3
- languages/wp-job-manager.pot +171 -99
- readme.txt +18 -2
- templates/account-signin.php +2 -0
- templates/emails/admin-new-job.php +2 -0
- templates/emails/admin-updated-job.php +2 -0
- templates/emails/employer-expiring-job.php +3 -0
- templates/emails/plain/admin-expiring-job.php +5 -2
- templates/emails/plain/admin-new-job.php +3 -1
- templates/emails/plain/admin-updated-job.php +3 -1
- templates/emails/plain/employer-expiring-job.php +5 -2
- templates/form-fields/wp-editor-field.php +25 -20
- templates/job-application-email.php +1 -0
- templates/job-submitted.php +3 -1
- templates/pagination.php +9 -0
- wp-job-manager-functions.php +67 -12
- wp-job-manager.php +2 -2
assets/js/ajax-file-upload.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(function(e){e(".wp-job-manager-file-upload").each(function(){e(this).fileupload({dataType:"json",dropZone:e(this),url:job_manager_ajax_file_upload.ajax_url.toString().replace("%%endpoint%%","upload_file"),formData:{script:!0},change:function(){this.validation_errors=[]},add:function(a,i){var t=e(this),r=t.closest("form"),n=t.parent().find(".job-manager-uploaded-files"),o=[],l=!1,s=parseInt(t.data("file_limit"),10);if(void 0!==t.data("file_limit_left")?l=parseInt(t.data("file_limit_left"),10):void 0!==s&&(l=s-parseInt(n.children(".job-manager-uploaded-file").length,10),t.data("file_limit_left",l)),!1!==l&&l<=0){var d="Exceeded upload limit";t.data("file_limit_message")?d=t.data("file_limit_message"):"undefined"!=typeof job_manager_job_submission&&(d=job_manager_job_submission.i18n_over_upload_limit),d=d.replace("%d",s),o.push(d)}var _=e(this).data("file_types");if(_){var p=new RegExp("(.|/)("+_+")$","i");i.originalFiles[0].name.length&&!p.test(i.originalFiles[0].name)&&o.push(job_manager_ajax_file_upload.i18n_invalid_file_type+" "+_)}o.length>0?this.validation_errors=this.validation_errors.concat(o):(!1!==l&&t.data("file_limit_left",l-1),r.find(':input[type="submit"]').attr("disabled","disabled"),i.context=e('<progress value="" max="100"></progress>').appendTo(n),i.submit())},progress:function(e,a){var i=parseInt(a.loaded/a.total*100,10);a.context.val(i)},fail:function(a,i){var t=e(this),r=t.closest("form");i.errorThrown&&window.alert(i.errorThrown),i.context.remove(),r.find(':input[type="submit"]').removeAttr("disabled"),t.trigger("update_status")},done:function(a,i){var t=e(this),r=t.closest("form"),n=t.parent().find(".job-manager-uploaded-files"),o=t.attr("multiple")?1:0,l=["jpg","gif","png","jpeg","jpe"];i.context.remove(),void 0===i.result.success||i.result.success||this.validation_errors.push(i.result.data)
|
1 |
+
jQuery(function(e){e(".wp-job-manager-file-upload").each(function(){e(this).fileupload({dataType:"json",dropZone:e(this),url:job_manager_ajax_file_upload.ajax_url.toString().replace("%%endpoint%%","upload_file"),formData:{script:!0},change:function(){this.validation_errors=[]},add:function(a,i){var t=e(this),r=t.closest("form"),n=t.parent().find(".job-manager-uploaded-files"),o=[],l=!1,s=parseInt(t.data("file_limit"),10);if(void 0!==t.data("file_limit_left")?l=parseInt(t.data("file_limit_left"),10):void 0!==s&&(l=s-parseInt(n.children(".job-manager-uploaded-file").length,10),t.data("file_limit_left",l)),!1!==l&&l<=0){var d="Exceeded upload limit";t.data("file_limit_message")?d=t.data("file_limit_message"):"undefined"!=typeof job_manager_job_submission&&(d=job_manager_job_submission.i18n_over_upload_limit),d=d.replace("%d",s),o.push(d)}var _=e(this).data("file_types");if(_){var p=new RegExp("(.|/)("+_+")$","i");i.originalFiles[0].name.length&&!p.test(i.originalFiles[0].name)&&o.push(job_manager_ajax_file_upload.i18n_invalid_file_type+" "+_)}o.length>0?this.validation_errors=this.validation_errors.concat(o):(!1!==l&&t.data("file_limit_left",l-1),r.find(':input[type="submit"]').attr("disabled","disabled"),i.context=e('<progress value="" max="100"></progress>').appendTo(n),i.submit())},progress:function(e,a){var i=parseInt(a.loaded/a.total*100,10);a.context.val(i)},fail:function(a,i){var t=e(this),r=t.closest("form");i.errorThrown&&window.alert(i.errorThrown),i.context.remove(),r.find(':input[type="submit"]').removeAttr("disabled"),t.trigger("update_status")},done:function(a,i){var t=e(this),r=t.closest("form"),n=t.parent().find(".job-manager-uploaded-files"),o=t.attr("multiple")?1:0,l=["jpg","gif","png","jpeg","jpe"];i.context.remove(),void 0===i.result.success||i.result.success||this.validation_errors.push(i.result.data);var s=this;e.each(i.result.files,function(a,i){if(i.error)s.validation_errors.push(i.error);else{var r;e.inArray(i.extension,l)>=0?(r=e.parseHTML(job_manager_ajax_file_upload.js_field_html_img),e(r).find(".job-manager-uploaded-file-preview img").attr("src",i.url)):(r=e.parseHTML(job_manager_ajax_file_upload.js_field_html),e(r).find(".job-manager-uploaded-file-name code").text(i.name)),e(r).find(".input-text").val(i.url),e(r).find(".input-text").attr("name","current_"+t.attr("name")),o?n.append(r):n.html(r)}}),this.validation_errors.length>0&&(this.validation_errors=this.validation_errors.filter(function(e,a,i){return i.indexOf(e)===a}),window.alert(this.validation_errors.join("\n"))),r.find(':input[type="submit"]').removeAttr("disabled"),t.trigger("update_status")}})})});
|
changelog.txt
CHANGED
@@ -1,3 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
= 1.34.1 =
|
2 |
* Templates Updated: `job-submitted.php`, `job-dashboard.php`.
|
3 |
* Enhancement: Email notifications are sent separately if multiple recipients are listed.
|
1 |
+
= 1.34.2 =
|
2 |
+
* Enhancement: New filter to skip validation for application field.
|
3 |
+
* Enhancement: New method for clearing fields.
|
4 |
+
* Fix: Improve TwentyTwenty theme compatibility (@JuanchoPestana)
|
5 |
+
* Fix: Issue in RSS feed with empty query parameters.
|
6 |
+
* Fix: Issue on Jobs page with empty query parameters.
|
7 |
+
* Fix: Conflict with search query parameters on Jobs page.
|
8 |
+
* Fix: Ensuring hidden jobs do not display in RSS feed.
|
9 |
+
* Fix: Image validation when posting a job.
|
10 |
+
* Fix: JS error in file upload.
|
11 |
+
* Fix: Removed extra whitespace in textarea settings fields.
|
12 |
+
* Fix: Several untranslatable strings are now translatable.
|
13 |
+
* Fix: CC header in emails.
|
14 |
+
* Fix: Search category query sanitization.
|
15 |
+
* Fix: Remove PHP notices. (@truongwp)
|
16 |
+
|
17 |
= 1.34.1 =
|
18 |
* Templates Updated: `job-submitted.php`, `job-dashboard.php`.
|
19 |
* Enhancement: Email notifications are sent separately if multiple recipients are listed.
|
includes/abstracts/abstract-wp-job-manager-form.php
CHANGED
@@ -298,6 +298,13 @@ abstract class WP_Job_Manager_Form {
|
|
298 |
$this->fields = [];
|
299 |
}
|
300 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
301 |
/**
|
302 |
* Enqueue the scripts for the form.
|
303 |
*/
|
298 |
$this->fields = [];
|
299 |
}
|
300 |
|
301 |
+
/**
|
302 |
+
* Clears form fields (resets to empty array)
|
303 |
+
*/
|
304 |
+
public function clear_fields() {
|
305 |
+
$this->fields = [];
|
306 |
+
}
|
307 |
+
|
308 |
/**
|
309 |
* Enqueue the scripts for the form.
|
310 |
*/
|
includes/admin/class-wp-job-manager-cpt.php
CHANGED
@@ -580,7 +580,7 @@ class WP_Job_Manager_CPT {
|
|
580 |
|
581 |
the_company_logo();
|
582 |
echo '</div>';
|
583 |
-
echo '<button type="button" class="toggle-row"><span class="screen-reader-text">Show more details</span></button>';
|
584 |
break;
|
585 |
case 'job_location':
|
586 |
the_job_location( true, $post );
|
580 |
|
581 |
the_company_logo();
|
582 |
echo '</div>';
|
583 |
+
echo '<button type="button" class="toggle-row"><span class="screen-reader-text">' . esc_html__( 'Show more details', 'wp-job-manager' ) . '</span></button>';
|
584 |
break;
|
585 |
case 'job_location':
|
586 |
the_job_location( true, $post );
|
includes/admin/class-wp-job-manager-settings.php
CHANGED
@@ -558,9 +558,7 @@ class WP_Job_Manager_Settings {
|
|
558 |
echo implode( ' ', $attributes ) . ' '; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
559 |
echo $placeholder; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
560 |
?>
|
561 |
-
>
|
562 |
-
<?php echo esc_textarea( $value ); ?>
|
563 |
-
</textarea>
|
564 |
<?php
|
565 |
|
566 |
if ( ! empty( $option['desc'] ) ) {
|
558 |
echo implode( ' ', $attributes ) . ' '; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
559 |
echo $placeholder; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
560 |
?>
|
561 |
+
><?php echo esc_textarea( $value ); ?></textarea>
|
|
|
|
|
562 |
<?php
|
563 |
|
564 |
if ( ! empty( $option['desc'] ) ) {
|
includes/admin/class-wp-job-manager-setup.php
CHANGED
@@ -123,7 +123,7 @@ class WP_Job_Manager_Setup {
|
|
123 |
! isset( $_REQUEST['setup_wizard'] )
|
124 |
|| false === wp_verify_nonce( wp_unslash( $_REQUEST['setup_wizard'] ), 'step_3' ) // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Nonce should not be modified.
|
125 |
) {
|
126 |
-
wp_die( 'Error in nonce. Try again.', 'wp-job-manager' );
|
127 |
}
|
128 |
$create_pages = isset( $_POST['wp-job-manager-create-page'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['wp-job-manager-create-page'] ) ) : [];
|
129 |
$page_titles = isset( $_POST['wp-job-manager-page-title'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['wp-job-manager-page-title'] ) ) : [];
|
123 |
! isset( $_REQUEST['setup_wizard'] )
|
124 |
|| false === wp_verify_nonce( wp_unslash( $_REQUEST['setup_wizard'] ), 'step_3' ) // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Nonce should not be modified.
|
125 |
) {
|
126 |
+
wp_die( esc_html__( 'Error in nonce. Try again.', 'wp-job-manager' ), 'wp-job-manager' );
|
127 |
}
|
128 |
$create_pages = isset( $_POST['wp-job-manager-create-page'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['wp-job-manager-create-page'] ) ) : [];
|
129 |
$page_titles = isset( $_POST['wp-job-manager-page-title'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['wp-job-manager-page-title'] ) ) : [];
|
includes/admin/views/html-admin-setup-step-3.php
CHANGED
@@ -68,7 +68,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
68 |
<ul>
|
69 |
<li class="icon-review"><a href="https://wordpress.org/support/view/plugin-reviews/wp-job-manager#postform"><?php esc_html_e( 'Leave a positive review', 'wp-job-manager' ); ?></a></li>
|
70 |
<li class="icon-localization"><a href="https://translate.wordpress.org/projects/wp-plugins/wp-job-manager"><?php esc_html_e( 'Contribute a localization', 'wp-job-manager' ); ?></a></li>
|
71 |
-
<li class="icon-code"><a href="https://github.com/
|
72 |
<li class="icon-forum"><a href="https://wordpress.org/support/plugin/wp-job-manager"><?php esc_html_e( 'Help other users on the forums', 'wp-job-manager' ); ?></a></li>
|
73 |
</ul>
|
74 |
</div>
|
68 |
<ul>
|
69 |
<li class="icon-review"><a href="https://wordpress.org/support/view/plugin-reviews/wp-job-manager#postform"><?php esc_html_e( 'Leave a positive review', 'wp-job-manager' ); ?></a></li>
|
70 |
<li class="icon-localization"><a href="https://translate.wordpress.org/projects/wp-plugins/wp-job-manager"><?php esc_html_e( 'Contribute a localization', 'wp-job-manager' ); ?></a></li>
|
71 |
+
<li class="icon-code"><a href="https://github.com/Automattic/WP-Job-Manager/"><?php esc_html_e( 'Contribute code or report a bug', 'wp-job-manager' ); ?></a></li>
|
72 |
<li class="icon-forum"><a href="https://wordpress.org/support/plugin/wp-job-manager"><?php esc_html_e( 'Help other users on the forums', 'wp-job-manager' ); ?></a></li>
|
73 |
</ul>
|
74 |
</div>
|
includes/class-wp-job-manager-dependency-checker.php
CHANGED
@@ -115,7 +115,7 @@ class WP_Job_Manager_Dependency_Checker {
|
|
115 |
$update_action_link = '';
|
116 |
if ( current_user_can( 'update_core' ) ) {
|
117 |
// translators: %s is the URL for the page where users can go to update WordPress.
|
118 |
-
$update_action_link = ' ' . sprintf( 'Please <a href="%s">update WordPress</a> to avoid issues.', esc_url( self_admin_url( 'update-core.php' ) ) );
|
119 |
}
|
120 |
|
121 |
echo '<div class="error">';
|
115 |
$update_action_link = '';
|
116 |
if ( current_user_can( 'update_core' ) ) {
|
117 |
// translators: %s is the URL for the page where users can go to update WordPress.
|
118 |
+
$update_action_link = ' ' . sprintf( __( 'Please <a href="%s">update WordPress</a> to avoid issues.', 'wp-job-manager' ), esc_url( self_admin_url( 'update-core.php' ) ) );
|
119 |
}
|
120 |
|
121 |
echo '<div class="error">';
|
includes/class-wp-job-manager-email-notifications.php
CHANGED
@@ -770,7 +770,7 @@ final class WP_Job_Manager_Email_Notifications {
|
|
770 |
}
|
771 |
|
772 |
$args['headers'] = is_array( $args['headers'] ) ? $args['headers'] : [];
|
773 |
-
$send_to
|
774 |
if ( ! is_array( $send_to ) ) {
|
775 |
$send_to = array_filter( array_map( 'sanitize_email', preg_split( '/[,|;]\s?/', $send_to ) ) );
|
776 |
}
|
@@ -790,11 +790,15 @@ final class WP_Job_Manager_Email_Notifications {
|
|
790 |
*/
|
791 |
$args = apply_filters( "job_manager_email_{$email_notification_key}_args", $args, $email );
|
792 |
|
793 |
-
$headers
|
794 |
if ( ! empty( $args['from'] ) ) {
|
795 |
$headers[] = 'From: ' . $args['from'];
|
796 |
}
|
797 |
|
|
|
|
|
|
|
|
|
798 |
if ( ! self::send_as_plain_text( $email_notification_key, $args ) ) {
|
799 |
$headers[] = 'Content-Type: text/html';
|
800 |
}
|
@@ -809,7 +813,6 @@ final class WP_Job_Manager_Email_Notifications {
|
|
809 |
* @param array $args Email arguments for generating email.
|
810 |
* @param string $content Email content.
|
811 |
* @param array $headers Email headers.
|
812 |
-
* @param
|
813 |
*/
|
814 |
if ( ! apply_filters( 'job_manager_email_do_send_notification', true, $email, $args, $content, $headers ) ) {
|
815 |
continue;
|
770 |
}
|
771 |
|
772 |
$args['headers'] = is_array( $args['headers'] ) ? $args['headers'] : [];
|
773 |
+
$send_to = $args['to'];
|
774 |
if ( ! is_array( $send_to ) ) {
|
775 |
$send_to = array_filter( array_map( 'sanitize_email', preg_split( '/[,|;]\s?/', $send_to ) ) );
|
776 |
}
|
790 |
*/
|
791 |
$args = apply_filters( "job_manager_email_{$email_notification_key}_args", $args, $email );
|
792 |
|
793 |
+
$headers = $args['headers'];
|
794 |
if ( ! empty( $args['from'] ) ) {
|
795 |
$headers[] = 'From: ' . $args['from'];
|
796 |
}
|
797 |
|
798 |
+
if ( ! empty( $args['cc'] ) ) {
|
799 |
+
$headers[] = 'CC: ' . $args['cc'];
|
800 |
+
}
|
801 |
+
|
802 |
if ( ! self::send_as_plain_text( $email_notification_key, $args ) ) {
|
803 |
$headers[] = 'Content-Type: text/html';
|
804 |
}
|
813 |
* @param array $args Email arguments for generating email.
|
814 |
* @param string $content Email content.
|
815 |
* @param array $headers Email headers.
|
|
|
816 |
*/
|
817 |
if ( ! apply_filters( 'job_manager_email_do_send_notification', true, $email, $args, $content, $headers ) ) {
|
818 |
continue;
|
includes/class-wp-job-manager-geocode.php
CHANGED
@@ -229,7 +229,7 @@ class WP_Job_Manager_Geocode {
|
|
229 |
$result = wp_remote_retrieve_body( $result );
|
230 |
$geocoded_address = json_decode( $result );
|
231 |
|
232 |
-
if ( $geocoded_address->status ) {
|
233 |
if ( 'ZERO_RESULTS' === $geocoded_address->status ) {
|
234 |
throw new Exception( __( 'No results found', 'wp-job-manager' ) );
|
235 |
} elseif ( 'OVER_QUERY_LIMIT' === $geocoded_address->status ) {
|
229 |
$result = wp_remote_retrieve_body( $result );
|
230 |
$geocoded_address = json_decode( $result );
|
231 |
|
232 |
+
if ( isset( $geocoded_address->status ) ) {
|
233 |
if ( 'ZERO_RESULTS' === $geocoded_address->status ) {
|
234 |
throw new Exception( __( 'No results found', 'wp-job-manager' ) );
|
235 |
} elseif ( 'OVER_QUERY_LIMIT' === $geocoded_address->status ) {
|
includes/class-wp-job-manager-post-types.php
CHANGED
@@ -549,9 +549,22 @@ class WP_Job_Manager_Post_Types {
|
|
549 |
// phpcs:disable WordPress.Security.NonceVerification.Recommended -- Input used to filter public data in feed.
|
550 |
$input_posts_per_page = isset( $_GET['posts_per_page'] ) ? absint( $_GET['posts_per_page'] ) : 10;
|
551 |
$input_search_location = isset( $_GET['search_location'] ) ? sanitize_text_field( wp_unslash( $_GET['search_location'] ) ) : false;
|
552 |
-
|
553 |
-
|
554 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
555 |
// phpcs:enable WordPress.Security.NonceVerification.Recommended
|
556 |
|
557 |
$query_args = [
|
@@ -577,6 +590,14 @@ class WP_Job_Manager_Post_Types {
|
|
577 |
$query_args['meta_query'][] = $location_search;
|
578 |
}
|
579 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
580 |
if ( ! empty( $input_job_types ) ) {
|
581 |
$query_args['tax_query'][] = [
|
582 |
'taxonomy' => 'job_listing_type',
|
@@ -873,7 +894,7 @@ class WP_Job_Manager_Post_Types {
|
|
873 |
*
|
874 |
* @since 1.34.1
|
875 |
*
|
876 |
-
* @param int
|
877 |
* @return bool
|
878 |
*/
|
879 |
public static function job_is_editable( $job_id ) {
|
549 |
// phpcs:disable WordPress.Security.NonceVerification.Recommended -- Input used to filter public data in feed.
|
550 |
$input_posts_per_page = isset( $_GET['posts_per_page'] ) ? absint( $_GET['posts_per_page'] ) : 10;
|
551 |
$input_search_location = isset( $_GET['search_location'] ) ? sanitize_text_field( wp_unslash( $_GET['search_location'] ) ) : false;
|
552 |
+
|
553 |
+
if ( isset( $_GET['job_types'] ) ) {
|
554 |
+
$sanitized_job_types = sanitize_text_field( wp_unslash( $_GET['job_types'] ) );
|
555 |
+
$input_job_types = empty( $sanitized_job_types ) ? false : explode( ',', $sanitized_job_types );
|
556 |
+
} else {
|
557 |
+
$input_job_types = false;
|
558 |
+
}
|
559 |
+
|
560 |
+
if ( isset( $_GET['job_categories'] ) ) {
|
561 |
+
$sanitized_job_categories = sanitize_text_field( wp_unslash( $_GET['job_categories'] ) );
|
562 |
+
$input_job_categories = empty( $sanitized_job_categories ) ? false : explode( ',', $sanitized_job_categories );
|
563 |
+
} else {
|
564 |
+
$input_job_categories = false;
|
565 |
+
}
|
566 |
+
|
567 |
+
$job_manager_keyword = isset( $_GET['search_keywords'] ) ? sanitize_text_field( wp_unslash( $_GET['search_keywords'] ) ) : '';
|
568 |
// phpcs:enable WordPress.Security.NonceVerification.Recommended
|
569 |
|
570 |
$query_args = [
|
590 |
$query_args['meta_query'][] = $location_search;
|
591 |
}
|
592 |
|
593 |
+
// Hide filled positions from the job feed.
|
594 |
+
if ( 1 === absint( get_option( 'job_manager_hide_filled_positions' ) ) ) {
|
595 |
+
$query_args['meta_query'][] = [
|
596 |
+
'key' => '_filled',
|
597 |
+
'value' => '0',
|
598 |
+
];
|
599 |
+
}
|
600 |
+
|
601 |
if ( ! empty( $input_job_types ) ) {
|
602 |
$query_args['tax_query'][] = [
|
603 |
'taxonomy' => 'job_listing_type',
|
894 |
*
|
895 |
* @since 1.34.1
|
896 |
*
|
897 |
+
* @param int $job_id Job ID to check.
|
898 |
* @return bool
|
899 |
*/
|
900 |
public static function job_is_editable( $job_id ) {
|
includes/class-wp-job-manager-shortcodes.php
CHANGED
@@ -342,19 +342,26 @@ class WP_Job_Manager_Shortcodes {
|
|
342 |
$atts['filled'] = ( is_bool( $atts['filled'] ) && $atts['filled'] ) || in_array( $atts['filled'], [ 1, '1', 'true', 'yes' ], true );
|
343 |
}
|
344 |
|
|
|
|
|
|
|
345 |
// Get keywords, location, category and type from querystring if set.
|
346 |
// phpcs:disable WordPress.Security.NonceVerification.Recommended -- Input is used safely.
|
347 |
if ( ! empty( $_GET['search_keywords'] ) ) {
|
348 |
-
$atts['keywords']
|
|
|
349 |
}
|
350 |
if ( ! empty( $_GET['search_location'] ) ) {
|
351 |
-
$atts['location']
|
|
|
352 |
}
|
353 |
if ( ! empty( $_GET['search_category'] ) ) {
|
354 |
$atts['selected_category'] = sanitize_text_field( wp_unslash( $_GET['search_category'] ) );
|
|
|
355 |
}
|
356 |
if ( ! empty( $_GET['search_job_type'] ) ) {
|
357 |
$atts['selected_job_types'] = sanitize_text_field( wp_unslash( $_GET['search_job_type'] ) );
|
|
|
358 |
}
|
359 |
// phpcs:enable WordPress.Security.NonceVerification.Recommended
|
360 |
|
@@ -379,14 +386,15 @@ class WP_Job_Manager_Shortcodes {
|
|
379 |
}
|
380 |
|
381 |
$data_attributes = [
|
382 |
-
'location'
|
383 |
-
'keywords'
|
384 |
-
'show_filters'
|
385 |
-
'show_pagination'
|
386 |
-
'per_page'
|
387 |
-
'orderby'
|
388 |
-
'order'
|
389 |
-
'categories'
|
|
|
390 |
];
|
391 |
|
392 |
if ( $atts['show_filters'] ) {
|
342 |
$atts['filled'] = ( is_bool( $atts['filled'] ) && $atts['filled'] ) || in_array( $atts['filled'], [ 1, '1', 'true', 'yes' ], true );
|
343 |
}
|
344 |
|
345 |
+
// By default, use client-side state to populate form fields.
|
346 |
+
$disable_client_state = false;
|
347 |
+
|
348 |
// Get keywords, location, category and type from querystring if set.
|
349 |
// phpcs:disable WordPress.Security.NonceVerification.Recommended -- Input is used safely.
|
350 |
if ( ! empty( $_GET['search_keywords'] ) ) {
|
351 |
+
$atts['keywords'] = sanitize_text_field( wp_unslash( $_GET['search_keywords'] ) );
|
352 |
+
$disable_client_state = true;
|
353 |
}
|
354 |
if ( ! empty( $_GET['search_location'] ) ) {
|
355 |
+
$atts['location'] = sanitize_text_field( wp_unslash( $_GET['search_location'] ) );
|
356 |
+
$disable_client_state = true;
|
357 |
}
|
358 |
if ( ! empty( $_GET['search_category'] ) ) {
|
359 |
$atts['selected_category'] = sanitize_text_field( wp_unslash( $_GET['search_category'] ) );
|
360 |
+
$disable_client_state = true;
|
361 |
}
|
362 |
if ( ! empty( $_GET['search_job_type'] ) ) {
|
363 |
$atts['selected_job_types'] = sanitize_text_field( wp_unslash( $_GET['search_job_type'] ) );
|
364 |
+
$disable_client_state = true;
|
365 |
}
|
366 |
// phpcs:enable WordPress.Security.NonceVerification.Recommended
|
367 |
|
386 |
}
|
387 |
|
388 |
$data_attributes = [
|
389 |
+
'location' => $atts['location'],
|
390 |
+
'keywords' => $atts['keywords'],
|
391 |
+
'show_filters' => $atts['show_filters'] ? 'true' : 'false',
|
392 |
+
'show_pagination' => $atts['show_pagination'] ? 'true' : 'false',
|
393 |
+
'per_page' => $atts['per_page'],
|
394 |
+
'orderby' => $atts['orderby'],
|
395 |
+
'order' => $atts['order'],
|
396 |
+
'categories' => implode( ',', $atts['categories'] ),
|
397 |
+
'disable-form-state-storage' => $disable_client_state,
|
398 |
];
|
399 |
|
400 |
if ( $atts['show_filters'] ) {
|
includes/class-wp-job-manager-widget.php
CHANGED
@@ -130,7 +130,7 @@ class WP_Job_Manager_Widget extends WP_Widget {
|
|
130 |
}
|
131 |
|
132 |
foreach ( $this->settings as $key => $setting ) {
|
133 |
-
$instance[ $key ] = sanitize_text_field( $new_instance[ $key ] );
|
134 |
}
|
135 |
|
136 |
$this->flush_widget_cache();
|
130 |
}
|
131 |
|
132 |
foreach ( $this->settings as $key => $setting ) {
|
133 |
+
$instance[ $key ] = isset( $new_instance[ $key ] ) ? sanitize_text_field( $new_instance[ $key ] ) : '';
|
134 |
}
|
135 |
|
136 |
$this->flush_widget_cache();
|
includes/forms/class-wp-job-manager-form-submit-job.php
CHANGED
@@ -328,6 +328,22 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
|
|
328 |
return 1 === absint( get_option( 'job_manager_enable_recaptcha_job_submission' ) );
|
329 |
}
|
330 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
331 |
/**
|
332 |
* Validates the posted fields.
|
333 |
*
|
@@ -363,6 +379,24 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
|
|
363 |
}
|
364 |
if ( ! empty( $check_value ) ) {
|
365 |
foreach ( $check_value as $file_url ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
366 |
if ( is_numeric( $file_url ) ) {
|
367 |
continue;
|
368 |
}
|
@@ -373,24 +407,6 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
|
|
373 |
}
|
374 |
}
|
375 |
}
|
376 |
-
if ( 'file' === $field['type'] && ! empty( $field['allowed_mime_types'] ) ) {
|
377 |
-
if ( is_array( $values[ $group_key ][ $key ] ) ) {
|
378 |
-
$check_value = array_filter( $values[ $group_key ][ $key ] );
|
379 |
-
} else {
|
380 |
-
$check_value = array_filter( [ $values[ $group_key ][ $key ] ] );
|
381 |
-
}
|
382 |
-
if ( ! empty( $check_value ) ) {
|
383 |
-
foreach ( $check_value as $file_url ) {
|
384 |
-
$file_url = current( explode( '?', $file_url ) );
|
385 |
-
$file_info = wp_check_filetype( $file_url );
|
386 |
-
|
387 |
-
if ( ! is_numeric( $file_url ) && $file_info && ! in_array( $file_info['type'], $field['allowed_mime_types'], true ) ) {
|
388 |
-
// translators: Placeholder %1$s is field label; %2$s is the file mime type; %3$s is the allowed mime-types.
|
389 |
-
throw new Exception( sprintf( __( '"%1$s" (filetype %2$s) needs to be one of the following file types: %3$s', 'wp-job-manager' ), $field['label'], $file_info['ext'], implode( ', ', array_keys( $field['allowed_mime_types'] ) ) ) );
|
390 |
-
}
|
391 |
-
}
|
392 |
-
}
|
393 |
-
}
|
394 |
if ( empty( $field['file_limit'] ) && empty( $field['multiple'] ) ) {
|
395 |
$field['file_limit'] = 1;
|
396 |
}
|
@@ -415,7 +431,7 @@ class WP_Job_Manager_Form_Submit_Job extends WP_Job_Manager_Form {
|
|
415 |
}
|
416 |
|
417 |
// Application method.
|
418 |
-
if ( isset( $values['job']['application'] ) && ! empty( $values['job']['application'] ) ) {
|
419 |
$allowed_application_method = get_option( 'job_manager_allowed_application_method', '' );
|
420 |
$values['job']['application'] = str_replace( ' ', '+', $values['job']['application'] );
|
421 |
switch ( $allowed_application_method ) {
|
328 |
return 1 === absint( get_option( 'job_manager_enable_recaptcha_job_submission' ) );
|
329 |
}
|
330 |
|
331 |
+
/**
|
332 |
+
* Checks if application field should use skip email / URL validation.
|
333 |
+
*
|
334 |
+
* @return bool
|
335 |
+
*/
|
336 |
+
protected function should_application_field_skip_email_url_validation() {
|
337 |
+
/**
|
338 |
+
* Force application field to skip email / URL validation.
|
339 |
+
*
|
340 |
+
* @since 1.x.x
|
341 |
+
*
|
342 |
+
* @param bool $is_forced Whether the application field is forced to skip email / URL validation.
|
343 |
+
*/
|
344 |
+
return apply_filters( 'job_manager_application_field_skip_email_url_validation', false );
|
345 |
+
}
|
346 |
+
|
347 |
/**
|
348 |
* Validates the posted fields.
|
349 |
*
|
379 |
}
|
380 |
if ( ! empty( $check_value ) ) {
|
381 |
foreach ( $check_value as $file_url ) {
|
382 |
+
// Check image path.
|
383 |
+
$baseurl = wp_upload_dir()['baseurl'];
|
384 |
+
if ( ! is_numeric( $file_url ) && 0 !== strpos( $file_url, $baseurl ) ) {
|
385 |
+
throw new Exception( __( 'Invalid image path.', 'wp-job-manager' ) );
|
386 |
+
}
|
387 |
+
|
388 |
+
// Check mime types.
|
389 |
+
if ( ! empty( $field['allowed_mime_types'] ) ) {
|
390 |
+
$file_url = current( explode( '?', $file_url ) );
|
391 |
+
$file_info = wp_check_filetype( $file_url );
|
392 |
+
|
393 |
+
if ( ! is_numeric( $file_url ) && $file_info && ! in_array( $file_info['type'], $field['allowed_mime_types'], true ) ) {
|
394 |
+
// translators: Placeholder %1$s is field label; %2$s is the file mime type; %3$s is the allowed mime-types.
|
395 |
+
throw new Exception( sprintf( __( '"%1$s" (filetype %2$s) needs to be one of the following file types: %3$s', 'wp-job-manager' ), $field['label'], $file_info['ext'], implode( ', ', array_keys( $field['allowed_mime_types'] ) ) ) );
|
396 |
+
}
|
397 |
+
}
|
398 |
+
|
399 |
+
// Check if attachment is valid.
|
400 |
if ( is_numeric( $file_url ) ) {
|
401 |
continue;
|
402 |
}
|
407 |
}
|
408 |
}
|
409 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
410 |
if ( empty( $field['file_limit'] ) && empty( $field['multiple'] ) ) {
|
411 |
$field['file_limit'] = 1;
|
412 |
}
|
431 |
}
|
432 |
|
433 |
// Application method.
|
434 |
+
if ( ! $this->should_application_field_skip_email_url_validation() && isset( $values['job']['application'] ) && ! empty( $values['job']['application'] ) ) {
|
435 |
$allowed_application_method = get_option( 'job_manager_allowed_application_method', '' );
|
436 |
$values['job']['application'] = str_replace( ' ', '+', $values['job']['application'] );
|
437 |
switch ( $allowed_application_method ) {
|
includes/helper/views/html-licence-key-error.php
CHANGED
@@ -11,5 +11,6 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
11 |
?>
|
12 |
<div class="error">
|
13 |
<p class="wpjm-updater-dismiss" style="float:right;"><a href="<?php echo esc_url( wp_nonce_url( add_query_arg( 'dismiss-wpjm-licence-notice', $product_slug ), 'dismiss-wpjm-licence-notice', '_wpjm_nonce' ) ); ?>"><?php esc_html_e( 'Hide notice', 'wp-job-manager' ); ?></a></p>
|
14 |
-
|
|
|
15 |
</div>
|
11 |
?>
|
12 |
<div class="error">
|
13 |
<p class="wpjm-updater-dismiss" style="float:right;"><a href="<?php echo esc_url( wp_nonce_url( add_query_arg( 'dismiss-wpjm-licence-notice', $product_slug ), 'dismiss-wpjm-licence-notice', '_wpjm_nonce' ) ); ?>"><?php esc_html_e( 'Hide notice', 'wp-job-manager' ); ?></a></p>
|
14 |
+
<?php // translators: %1$s is the plugin name, %2$s is the license setting page URL. ?>
|
15 |
+
<p><?php printf( wp_kses_post( __( 'There is a problem with the license for "%1$s". Please <a href="%2$s">manage the license</a> to check for a solution and continue receiving updates.', 'wp-job-manager' ) ), esc_html( $plugin_data['Name'] ), esc_url( admin_url( 'edit.php?post_type=job_listing&page=job-manager-addons§ion=helper#' . sanitize_title( $product_slug . '_row' ) ) ) ); ?></p>
|
16 |
</div>
|
includes/helper/views/html-licence-key-notice.php
CHANGED
@@ -11,5 +11,6 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
11 |
?>
|
12 |
<div class="updated">
|
13 |
<p class="wpjm-updater-dismiss" style="float:right;"><a href="<?php echo esc_url( wp_nonce_url( add_query_arg( 'dismiss-wpjm-licence-notice', $product_slug ), 'dismiss-wpjm-licence-notice', '_wpjm_nonce' ) ); ?>"><?php esc_html_e( 'Hide notice', 'wp-job-manager' ); ?></a></p>
|
14 |
-
|
|
|
15 |
</div>
|
11 |
?>
|
12 |
<div class="updated">
|
13 |
<p class="wpjm-updater-dismiss" style="float:right;"><a href="<?php echo esc_url( wp_nonce_url( add_query_arg( 'dismiss-wpjm-licence-notice', $product_slug ), 'dismiss-wpjm-licence-notice', '_wpjm_nonce' ) ); ?>"><?php esc_html_e( 'Hide notice', 'wp-job-manager' ); ?></a></p>
|
14 |
+
<?php // translators: %1$s is the license setting page URL, %2$s is the plugin name. ?>
|
15 |
+
<p><?php printf( wp_kses_post( __( '<a href="%1$s">Please enter your license key</a> to get updates for "%2$s".', 'wp-job-manager' ) ), esc_url( admin_url( 'edit.php?post_type=job_listing&page=job-manager-addons§ion=helper#' . sanitize_title( $product_slug . '_row' ) ) ), esc_html( $plugin_data['Name'] ) ); ?></p>
|
16 |
</div>
|
includes/helper/views/html-licences.php
CHANGED
@@ -57,7 +57,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
57 |
<input type="text" disabled="disabled" id="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_licence_key" name="licence_key" placeholder="XXXX-XXXX-XXXX-XXXX" value="<?php echo esc_attr( $licence['licence_key'] ); ?>"/>
|
58 |
</label>
|
59 |
<label for="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_email"><?php esc_html_e( 'Email', 'wp-job-manager' ); ?>:
|
60 |
-
<input type="email" disabled="disabled" id="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_email" name="email" placeholder="Email address" value="<?php echo esc_attr( $licence['email'] ); ?>"/>
|
61 |
</label>
|
62 |
|
63 |
<input type="submit" class="button" name="submit" value="<?php esc_attr_e( 'Deactivate License', 'wp-job-manager' ); ?>" />
|
@@ -70,7 +70,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
70 |
<input type="text" id="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_licence_key" name="licence_key" placeholder="XXXX-XXXX-XXXX-XXXX"/>
|
71 |
</label>
|
72 |
<label for="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_email"><?php esc_html_e( 'Email', 'wp-job-manager' ); ?>:
|
73 |
-
<input type="email" id="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_email" name="email" placeholder="Email address" value="<?php echo esc_attr( get_option( 'admin_email' ) ); ?>"/>
|
74 |
</label>
|
75 |
<input type="submit" class="button" name="submit" value="<?php esc_attr_e( 'Activate License', 'wp-job-manager' ); ?>" />
|
76 |
<?php
|
@@ -80,7 +80,8 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
80 |
</div>
|
81 |
</div>
|
82 |
<?php endforeach; ?>
|
83 |
-
|
|
|
84 |
<?php else : ?>
|
85 |
<div class="notice notice-warning inline"><p><?php esc_html_e( 'No plugins are activated that have licenses managed by WP Job Manager.', 'wp-job-manager' ); ?></p></div>
|
86 |
<?php endif; ?>
|
57 |
<input type="text" disabled="disabled" id="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_licence_key" name="licence_key" placeholder="XXXX-XXXX-XXXX-XXXX" value="<?php echo esc_attr( $licence['licence_key'] ); ?>"/>
|
58 |
</label>
|
59 |
<label for="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_email"><?php esc_html_e( 'Email', 'wp-job-manager' ); ?>:
|
60 |
+
<input type="email" disabled="disabled" id="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_email" name="email" placeholder="<?php esc_attr_e( 'Email address', 'wp-job-manager' ); ?>" value="<?php echo esc_attr( $licence['email'] ); ?>"/>
|
61 |
</label>
|
62 |
|
63 |
<input type="submit" class="button" name="submit" value="<?php esc_attr_e( 'Deactivate License', 'wp-job-manager' ); ?>" />
|
70 |
<input type="text" id="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_licence_key" name="licence_key" placeholder="XXXX-XXXX-XXXX-XXXX"/>
|
71 |
</label>
|
72 |
<label for="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_email"><?php esc_html_e( 'Email', 'wp-job-manager' ); ?>:
|
73 |
+
<input type="email" id="<?php echo esc_attr( sanitize_title( $product_slug ) ); ?>_email" name="email" placeholder="<?php esc_attr_e( 'Email address', 'wp-job-manager' ); ?>" value="<?php echo esc_attr( get_option( 'admin_email' ) ); ?>"/>
|
74 |
</label>
|
75 |
<input type="submit" class="button" name="submit" value="<?php esc_attr_e( 'Activate License', 'wp-job-manager' ); ?>" />
|
76 |
<?php
|
80 |
</div>
|
81 |
</div>
|
82 |
<?php endforeach; ?>
|
83 |
+
<?php // translators: Placeholder %s is the lost license key URL. ?>
|
84 |
+
<div class="notice notice-info inline"><p><?php printf( wp_kses_post( __( 'Lost your license key? <a href="%s">Retrieve it here</a>.', 'wp-job-manager' ) ), 'https://wpjobmanager.com/lost-licence-key/' ); ?></p></div>
|
85 |
<?php else : ?>
|
86 |
<div class="notice notice-warning inline"><p><?php esc_html_e( 'No plugins are activated that have licenses managed by WP Job Manager.', 'wp-job-manager' ); ?></p></div>
|
87 |
<?php endif; ?>
|
languages/wp-job-manager.pot
CHANGED
@@ -1,14 +1,14 @@
|
|
1 |
-
# Copyright (C)
|
2 |
# This file is distributed under the GPL2+.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: WP Job Manager 1.34.
|
6 |
"Report-Msgid-Bugs-To: https://github.com/Automattic/WP-Job-Manager/issues\n"
|
7 |
-
"POT-Creation-Date:
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
11 |
-
"PO-Revision-Date:
|
12 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
13 |
"Language-Team: LANGUAGE <EMAIL@ADDRESS>\n"
|
14 |
"X-Generator: grunt-wp-i18n 1.0.3\n"
|
@@ -23,8 +23,8 @@ msgstr ""
|
|
23 |
msgid "<a href=\"%s\">Switch to primary language</a> to edit this setting."
|
24 |
msgstr ""
|
25 |
|
26 |
-
#: includes/abstracts/abstract-wp-job-manager-form.php:
|
27 |
-
#: includes/abstracts/abstract-wp-job-manager-form.php:
|
28 |
#. translators: Placeholder is for the label of the reCAPTCHA field.
|
29 |
#. translators: %s is the name of the form validation that failed.
|
30 |
msgid "\"%s\" check failed. Please try again."
|
@@ -201,7 +201,7 @@ msgstr ""
|
|
201 |
|
202 |
#: includes/admin/class-wp-job-manager-cpt.php:497
|
203 |
#: includes/class-wp-job-manager-email-notifications.php:270
|
204 |
-
#: includes/class-wp-job-manager-post-types.php:
|
205 |
#: includes/forms/class-wp-job-manager-form-submit-job.php:213
|
206 |
#: includes/widgets/class-wp-job-manager-widget-recent-jobs.php:46
|
207 |
#: templates/job-filters.php:35 templates/job-filters.php:36
|
@@ -243,6 +243,10 @@ msgstr ""
|
|
243 |
msgid "ID: %d"
|
244 |
msgstr ""
|
245 |
|
|
|
|
|
|
|
|
|
246 |
#: includes/admin/class-wp-job-manager-cpt.php:613
|
247 |
#. translators: %s placeholder is the username of the user.
|
248 |
msgid "by a guest"
|
@@ -712,11 +716,11 @@ msgstr ""
|
|
712 |
msgid "Save Changes"
|
713 |
msgstr ""
|
714 |
|
715 |
-
#: includes/admin/class-wp-job-manager-settings.php:
|
716 |
msgid "--no page--"
|
717 |
msgstr ""
|
718 |
|
719 |
-
#: includes/admin/class-wp-job-manager-settings.php:
|
720 |
msgid "Select a page…"
|
721 |
msgstr ""
|
722 |
|
@@ -724,6 +728,10 @@ msgstr ""
|
|
724 |
msgid "Setup"
|
725 |
msgstr ""
|
726 |
|
|
|
|
|
|
|
|
|
727 |
#: includes/admin/class-wp-job-manager-taxonomy-meta.php:87
|
728 |
#: includes/admin/class-wp-job-manager-taxonomy-meta.php:110
|
729 |
#: includes/admin/class-wp-job-manager-taxonomy-meta.php:129
|
@@ -1012,27 +1020,27 @@ msgid "Company Logo"
|
|
1012 |
msgstr ""
|
1013 |
|
1014 |
#: includes/class-wp-job-manager-data-exporter.php:52
|
1015 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1016 |
msgid "Company Name"
|
1017 |
msgstr ""
|
1018 |
|
1019 |
#: includes/class-wp-job-manager-data-exporter.php:53
|
1020 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1021 |
msgid "Company Website"
|
1022 |
msgstr ""
|
1023 |
|
1024 |
#: includes/class-wp-job-manager-data-exporter.php:54
|
1025 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1026 |
msgid "Company Tagline"
|
1027 |
msgstr ""
|
1028 |
|
1029 |
#: includes/class-wp-job-manager-data-exporter.php:55
|
1030 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1031 |
msgid "Company Twitter"
|
1032 |
msgstr ""
|
1033 |
|
1034 |
#: includes/class-wp-job-manager-data-exporter.php:56
|
1035 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1036 |
msgid "Company Video"
|
1037 |
msgstr ""
|
1038 |
|
@@ -1057,9 +1065,13 @@ msgstr ""
|
|
1057 |
msgid "(opens in a new tab)"
|
1058 |
msgstr ""
|
1059 |
|
1060 |
-
#: includes/class-wp-job-manager-dependency-checker.php:
|
1061 |
#. translators: %s is the URL for the page where users can go to update
|
1062 |
#. WordPress.
|
|
|
|
|
|
|
|
|
1063 |
msgid "<strong>WP Job Manager</strong> requires a more recent version of WordPress."
|
1064 |
msgstr ""
|
1065 |
|
@@ -1301,78 +1313,78 @@ msgid_plural "Preview <span class=\"count\">(%s)</span>"
|
|
1301 |
msgstr[0] ""
|
1302 |
msgstr[1] ""
|
1303 |
|
1304 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1305 |
#: includes/forms/class-wp-job-manager-form-submit-job.php:190
|
1306 |
msgid "Application email/URL"
|
1307 |
msgstr ""
|
1308 |
|
1309 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1310 |
#: includes/forms/class-wp-job-manager-form-submit-job.php:191
|
1311 |
msgid "Enter an email address or website URL"
|
1312 |
msgstr ""
|
1313 |
|
1314 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1315 |
#: includes/forms/class-wp-job-manager-form-submit-job.php:180
|
1316 |
msgid "Application email"
|
1317 |
msgstr ""
|
1318 |
|
1319 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1320 |
#: includes/forms/class-wp-job-manager-form-submit-job.php:181
|
1321 |
msgid "you@example.com"
|
1322 |
msgstr ""
|
1323 |
|
1324 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1325 |
#: includes/forms/class-wp-job-manager-form-submit-job.php:185
|
1326 |
msgid "Application URL"
|
1327 |
msgstr ""
|
1328 |
|
1329 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1330 |
#: includes/forms/class-wp-job-manager-form-submit-job.php:186
|
1331 |
msgid "https://"
|
1332 |
msgstr ""
|
1333 |
|
1334 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1335 |
#: includes/forms/class-wp-job-manager-form-submit-job.php:217
|
1336 |
msgid "e.g. \"London\""
|
1337 |
msgstr ""
|
1338 |
|
1339 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1340 |
msgid "Leave this blank if the location is not important."
|
1341 |
msgstr ""
|
1342 |
|
1343 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1344 |
msgid ""
|
1345 |
"This field is required for the \"application\" area to appear beneath the "
|
1346 |
"listing."
|
1347 |
msgstr ""
|
1348 |
|
1349 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1350 |
msgid "Brief description about the company"
|
1351 |
msgstr ""
|
1352 |
|
1353 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1354 |
msgid "URL to the company video"
|
1355 |
msgstr ""
|
1356 |
|
1357 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1358 |
msgid "Position Filled"
|
1359 |
msgstr ""
|
1360 |
|
1361 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1362 |
msgid "Filled listings will no longer accept applications."
|
1363 |
msgstr ""
|
1364 |
|
1365 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1366 |
msgid "Featured Listing"
|
1367 |
msgstr ""
|
1368 |
|
1369 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1370 |
msgid ""
|
1371 |
"Featured listings will be sticky during searches, and can be styled "
|
1372 |
"differently."
|
1373 |
msgstr ""
|
1374 |
|
1375 |
-
#: includes/class-wp-job-manager-post-types.php:
|
1376 |
msgid "Listing Expiry Date"
|
1377 |
msgstr ""
|
1378 |
|
@@ -1423,8 +1435,8 @@ msgstr ""
|
|
1423 |
msgid "Listing Expires"
|
1424 |
msgstr ""
|
1425 |
|
1426 |
-
#: includes/class-wp-job-manager-shortcodes.php:
|
1427 |
-
#: includes/class-wp-job-manager-shortcodes.php:
|
1428 |
msgid "Load more listings"
|
1429 |
msgstr ""
|
1430 |
|
@@ -1470,7 +1482,7 @@ msgid "Invalid file type. Accepted types:"
|
|
1470 |
msgstr ""
|
1471 |
|
1472 |
#: includes/class-wp-job-manager.php:439
|
1473 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1474 |
#. translators: Placeholder %d is the number of files to that users are limited
|
1475 |
#. to.
|
1476 |
msgid "You are only allowed to upload a maximum of %d files."
|
@@ -1574,7 +1586,7 @@ msgid "Submit Details"
|
|
1574 |
msgstr ""
|
1575 |
|
1576 |
#: includes/forms/class-wp-job-manager-form-submit-job.php:88
|
1577 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1578 |
#: templates/job-preview.php:30
|
1579 |
msgid "Preview"
|
1580 |
msgstr ""
|
@@ -1640,22 +1652,22 @@ msgstr ""
|
|
1640 |
msgid "Logo"
|
1641 |
msgstr ""
|
1642 |
|
1643 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1644 |
#. translators: Placeholder %s is the label for the required field.
|
1645 |
msgid "%s is a required field"
|
1646 |
msgstr ""
|
1647 |
|
1648 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1649 |
#. translators: Placeholder %s is the field label that is did not validate.
|
1650 |
msgid "%s is invalid"
|
1651 |
msgstr ""
|
1652 |
|
1653 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1654 |
-
msgid "Invalid
|
1655 |
msgstr ""
|
1656 |
|
1657 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1658 |
-
#: wp-job-manager-functions.php:
|
1659 |
#. translators: Placeholder %1$s is field label; %2$s is the file mime type;
|
1660 |
#. %3$s is the allowed mime-types.
|
1661 |
#. translators: %1$s is the file field label; %2$s is the file type; %3$s is
|
@@ -1663,48 +1675,52 @@ msgstr ""
|
|
1663 |
msgid "\"%1$s\" (filetype %2$s) needs to be one of the following file types: %3$s"
|
1664 |
msgstr ""
|
1665 |
|
1666 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
|
|
|
|
|
|
|
|
1667 |
msgid "Please enter a valid application email address"
|
1668 |
msgstr ""
|
1669 |
|
1670 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1671 |
msgid "Please enter a valid application URL"
|
1672 |
msgstr ""
|
1673 |
|
1674 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1675 |
msgid "Please enter a valid application email address or URL"
|
1676 |
msgstr ""
|
1677 |
|
1678 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1679 |
msgid "Please enter a username."
|
1680 |
msgstr ""
|
1681 |
|
1682 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1683 |
msgid "Please enter a password."
|
1684 |
msgstr ""
|
1685 |
|
1686 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1687 |
msgid "Please enter your email address."
|
1688 |
msgstr ""
|
1689 |
|
1690 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1691 |
msgid "Passwords must match."
|
1692 |
msgstr ""
|
1693 |
|
1694 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1695 |
#. translators: Placeholder %s is the password hint.
|
1696 |
msgid "Invalid Password: %s"
|
1697 |
msgstr ""
|
1698 |
|
1699 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1700 |
msgid "Password is not valid."
|
1701 |
msgstr ""
|
1702 |
|
1703 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1704 |
msgid "You must be signed in to post a new listing."
|
1705 |
msgstr ""
|
1706 |
|
1707 |
-
#: includes/forms/class-wp-job-manager-form-submit-job.php:
|
1708 |
#. translators: placeholder is the URL to the job dashboard page.
|
1709 |
msgid ""
|
1710 |
"Draft was saved. Job listing drafts can be resumed from the <a "
|
@@ -1755,6 +1771,21 @@ msgstr ""
|
|
1755 |
msgid "Hide notice"
|
1756 |
msgstr ""
|
1757 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1758 |
#: includes/helper/views/html-licences.php:56
|
1759 |
#: includes/helper/views/html-licences.php:69
|
1760 |
msgid "License"
|
@@ -1765,11 +1796,21 @@ msgstr ""
|
|
1765 |
msgid "Email"
|
1766 |
msgstr ""
|
1767 |
|
|
|
|
|
|
|
|
|
|
|
1768 |
#: includes/helper/views/html-licences.php:63
|
1769 |
msgid "Deactivate License"
|
1770 |
msgstr ""
|
1771 |
|
1772 |
-
#: includes/helper/views/html-licences.php:
|
|
|
|
|
|
|
|
|
|
|
1773 |
msgid "No plugins are activated that have licenses managed by WP Job Manager."
|
1774 |
msgstr ""
|
1775 |
|
@@ -1863,41 +1904,43 @@ msgstr ""
|
|
1863 |
msgid "Your account"
|
1864 |
msgstr ""
|
1865 |
|
1866 |
-
#: templates/account-signin.php:
|
|
|
1867 |
msgid "You are currently signed in as <strong>%s</strong>."
|
1868 |
msgstr ""
|
1869 |
|
1870 |
-
#: templates/account-signin.php:
|
1871 |
msgid "Sign out"
|
1872 |
msgstr ""
|
1873 |
|
1874 |
-
#: templates/account-signin.php:
|
1875 |
msgid "Have an account?"
|
1876 |
msgstr ""
|
1877 |
|
1878 |
-
#: templates/account-signin.php:
|
1879 |
msgid "Sign in"
|
1880 |
msgstr ""
|
1881 |
|
1882 |
-
#: templates/account-signin.php:
|
|
|
1883 |
msgid ""
|
1884 |
"If you don't have an account you can %screate one below by entering your "
|
1885 |
"email address/username."
|
1886 |
msgstr ""
|
1887 |
|
1888 |
-
#: templates/account-signin.php:
|
1889 |
msgid "optionally"
|
1890 |
msgstr ""
|
1891 |
|
1892 |
-
#: templates/account-signin.php:
|
1893 |
msgid "Your account details will be confirmed via email."
|
1894 |
msgstr ""
|
1895 |
|
1896 |
-
#: templates/account-signin.php:
|
1897 |
msgid "You must sign in to create a new listing."
|
1898 |
msgstr ""
|
1899 |
|
1900 |
-
#: templates/account-signin.php:
|
1901 |
#: templates/job-submit.php:60
|
1902 |
msgid "(optional)"
|
1903 |
msgstr ""
|
@@ -1939,81 +1982,104 @@ msgstr ""
|
|
1939 |
msgid "Visit <a href=\"%s\">WordPress admin</a> to manage the listing."
|
1940 |
msgstr ""
|
1941 |
|
1942 |
-
#: templates/emails/admin-new-job.php:
|
|
|
|
|
1943 |
msgid "A new job listing has been submitted to <a href=\"%s\">%s</a>."
|
1944 |
msgstr ""
|
1945 |
|
1946 |
-
#: templates/emails/admin-new-job.php:
|
1947 |
-
#: templates/emails/plain/admin-new-job.php:
|
1948 |
msgid "It has been published and is now available to the public."
|
1949 |
msgstr ""
|
1950 |
|
1951 |
-
#: templates/emails/admin-new-job.php:
|
|
|
1952 |
msgid ""
|
1953 |
"It is awaiting approval by an administrator in <a href=\"%s\">WordPress "
|
1954 |
"admin</a>."
|
1955 |
msgstr ""
|
1956 |
|
1957 |
-
#: templates/emails/admin-updated-job.php:
|
|
|
|
|
1958 |
msgid "A job listing has been updated on <a href=\"%s\">%s</a>."
|
1959 |
msgstr ""
|
1960 |
|
1961 |
-
#: templates/emails/admin-updated-job.php:
|
1962 |
-
#: templates/emails/plain/admin-updated-job.php:
|
1963 |
msgid "The changes have been published and are now available to the public."
|
1964 |
msgstr ""
|
1965 |
|
1966 |
-
#: templates/emails/admin-updated-job.php:
|
|
|
1967 |
msgid ""
|
1968 |
"The job listing is not publicly available until the changes are approved by "
|
1969 |
"an administrator in the site's <a href=\"%s\">WordPress admin</a>."
|
1970 |
msgstr ""
|
1971 |
|
1972 |
-
#: templates/emails/employer-expiring-job.php:
|
|
|
|
|
1973 |
msgid "The following job listing is expiring today from <a href=\"%s\">%s</a>."
|
1974 |
msgstr ""
|
1975 |
|
1976 |
-
#: templates/emails/employer-expiring-job.php:
|
|
|
|
|
1977 |
msgid "The following job listing is expiring soon from <a href=\"%s\">%s</a>."
|
1978 |
msgstr ""
|
1979 |
|
1980 |
-
#: templates/emails/employer-expiring-job.php:
|
|
|
1981 |
msgid "Visit the <a href=\"%s\">job listing dashboard</a> to manage the listing."
|
1982 |
msgstr ""
|
1983 |
|
1984 |
-
#: templates/emails/plain/admin-expiring-job.php:
|
1985 |
-
#: templates/emails/plain/employer-expiring-job.php:
|
1986 |
-
|
|
|
|
|
1987 |
msgstr ""
|
1988 |
|
1989 |
-
#: templates/emails/plain/admin-expiring-job.php:
|
1990 |
-
#: templates/emails/plain/employer-expiring-job.php:
|
1991 |
-
|
|
|
|
|
1992 |
msgstr ""
|
1993 |
|
1994 |
-
#: templates/emails/plain/admin-expiring-job.php:
|
|
|
1995 |
msgid "Visit WordPress admin (%s) to manage the listing."
|
1996 |
msgstr ""
|
1997 |
|
1998 |
-
#: templates/emails/plain/admin-new-job.php:
|
1999 |
-
|
|
|
|
|
2000 |
msgstr ""
|
2001 |
|
2002 |
-
#: templates/emails/plain/admin-new-job.php:
|
|
|
2003 |
msgid "It is awaiting approval by an administrator in WordPress admin (%s)."
|
2004 |
msgstr ""
|
2005 |
|
2006 |
-
#: templates/emails/plain/admin-updated-job.php:
|
2007 |
-
|
|
|
|
|
2008 |
msgstr ""
|
2009 |
|
2010 |
-
#: templates/emails/plain/admin-updated-job.php:
|
|
|
2011 |
msgid ""
|
2012 |
"The job listing is not publicly available until the changes are approved by "
|
2013 |
"an administrator in the site's WordPress admin (%s)."
|
2014 |
msgstr ""
|
2015 |
|
2016 |
-
#: templates/emails/plain/employer-expiring-job.php:
|
|
|
2017 |
msgid "Visit the job listing dashboard (%s) to manage the listing."
|
2018 |
msgstr ""
|
2019 |
|
@@ -2022,12 +2088,12 @@ msgid "Maximum file size: %s."
|
|
2022 |
msgstr ""
|
2023 |
|
2024 |
#: templates/form-fields/multiselect-field.php:20
|
2025 |
-
#: wp-job-manager-functions.php:
|
2026 |
msgid "No results match"
|
2027 |
msgstr ""
|
2028 |
|
2029 |
#: templates/form-fields/multiselect-field.php:20
|
2030 |
-
#: wp-job-manager-functions.php:
|
2031 |
msgid "Select Some Options"
|
2032 |
msgstr ""
|
2033 |
|
@@ -2036,7 +2102,8 @@ msgstr ""
|
|
2036 |
msgid "remove"
|
2037 |
msgstr ""
|
2038 |
|
2039 |
-
#: templates/job-application-email.php:
|
|
|
2040 |
msgid ""
|
2041 |
"To apply for this job <strong>email your details to</strong> <a "
|
2042 |
"class=\"job_application_email\" href=\"mailto:%1$s%2$s\">%1$s</a>"
|
@@ -2132,11 +2199,16 @@ msgstr ""
|
|
2132 |
msgid "Save Draft"
|
2133 |
msgstr ""
|
2134 |
|
2135 |
-
#: templates/job-submitted.php:
|
2136 |
-
|
|
|
|
|
|
|
|
|
2137 |
msgstr ""
|
2138 |
|
2139 |
-
#: templates/job-submitted.php:
|
|
|
2140 |
msgid "%s submitted successfully. Your listing will be visible once approved."
|
2141 |
msgstr ""
|
2142 |
|
@@ -2196,11 +2268,11 @@ msgstr ""
|
|
2196 |
msgid "Passwords must be at least 8 characters long."
|
2197 |
msgstr ""
|
2198 |
|
2199 |
-
#: wp-job-manager-functions.php:
|
2200 |
msgid "Choose a category…"
|
2201 |
msgstr ""
|
2202 |
|
2203 |
-
#: wp-job-manager-functions.php:
|
2204 |
#. translators: %s is the list of allowed file types.
|
2205 |
msgid "Uploaded files need to be one of the following file types: %s"
|
2206 |
msgstr ""
|
@@ -2294,19 +2366,19 @@ msgid "Searching…"
|
|
2294 |
msgstr ""
|
2295 |
|
2296 |
#: includes/admin/class-wp-job-manager-permalink-settings.php:108
|
2297 |
-
#: includes/class-wp-job-manager-post-types.php:
|
2298 |
msgctxt "Job permalink - resave permalinks after changing this"
|
2299 |
msgid "job"
|
2300 |
msgstr ""
|
2301 |
|
2302 |
#: includes/admin/class-wp-job-manager-permalink-settings.php:117
|
2303 |
-
#: includes/class-wp-job-manager-post-types.php:
|
2304 |
msgctxt "Job category slug - resave permalinks after changing this"
|
2305 |
msgid "job-category"
|
2306 |
msgstr ""
|
2307 |
|
2308 |
#: includes/admin/class-wp-job-manager-permalink-settings.php:126
|
2309 |
-
#: includes/class-wp-job-manager-post-types.php:
|
2310 |
msgctxt "Job type slug - resave permalinks after changing this"
|
2311 |
msgid "job-type"
|
2312 |
msgstr ""
|
@@ -2358,7 +2430,7 @@ msgctxt "post status"
|
|
2358 |
msgid "Active"
|
2359 |
msgstr ""
|
2360 |
|
2361 |
-
#: includes/class-wp-job-manager-post-types.php:
|
2362 |
msgctxt "Post type archive slug - resave permalinks after changing this"
|
2363 |
msgid "jobs"
|
2364 |
msgstr ""
|
1 |
+
# Copyright (C) 2020 Automattic
|
2 |
# This file is distributed under the GPL2+.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: WP Job Manager 1.34.2\n"
|
6 |
"Report-Msgid-Bugs-To: https://github.com/Automattic/WP-Job-Manager/issues\n"
|
7 |
+
"POT-Creation-Date: 2020-05-28 16:26:54+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
11 |
+
"PO-Revision-Date: 2020-MO-DA HO:MI+ZONE\n"
|
12 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
13 |
"Language-Team: LANGUAGE <EMAIL@ADDRESS>\n"
|
14 |
"X-Generator: grunt-wp-i18n 1.0.3\n"
|
23 |
msgid "<a href=\"%s\">Switch to primary language</a> to edit this setting."
|
24 |
msgstr ""
|
25 |
|
26 |
+
#: includes/abstracts/abstract-wp-job-manager-form.php:378
|
27 |
+
#: includes/abstracts/abstract-wp-job-manager-form.php:394
|
28 |
#. translators: Placeholder is for the label of the reCAPTCHA field.
|
29 |
#. translators: %s is the name of the form validation that failed.
|
30 |
msgid "\"%s\" check failed. Please try again."
|
201 |
|
202 |
#: includes/admin/class-wp-job-manager-cpt.php:497
|
203 |
#: includes/class-wp-job-manager-email-notifications.php:270
|
204 |
+
#: includes/class-wp-job-manager-post-types.php:1275
|
205 |
#: includes/forms/class-wp-job-manager-form-submit-job.php:213
|
206 |
#: includes/widgets/class-wp-job-manager-widget-recent-jobs.php:46
|
207 |
#: templates/job-filters.php:35 templates/job-filters.php:36
|
243 |
msgid "ID: %d"
|
244 |
msgstr ""
|
245 |
|
246 |
+
#: includes/admin/class-wp-job-manager-cpt.php:583
|
247 |
+
msgid "Show more details"
|
248 |
+
msgstr ""
|
249 |
+
|
250 |
#: includes/admin/class-wp-job-manager-cpt.php:613
|
251 |
#. translators: %s placeholder is the username of the user.
|
252 |
msgid "by a guest"
|
716 |
msgid "Save Changes"
|
717 |
msgstr ""
|
718 |
|
719 |
+
#: includes/admin/class-wp-job-manager-settings.php:641
|
720 |
msgid "--no page--"
|
721 |
msgstr ""
|
722 |
|
723 |
+
#: includes/admin/class-wp-job-manager-settings.php:647
|
724 |
msgid "Select a page…"
|
725 |
msgstr ""
|
726 |
|
728 |
msgid "Setup"
|
729 |
msgstr ""
|
730 |
|
731 |
+
#: includes/admin/class-wp-job-manager-setup.php:126
|
732 |
+
msgid "Error in nonce. Try again."
|
733 |
+
msgstr ""
|
734 |
+
|
735 |
#: includes/admin/class-wp-job-manager-taxonomy-meta.php:87
|
736 |
#: includes/admin/class-wp-job-manager-taxonomy-meta.php:110
|
737 |
#: includes/admin/class-wp-job-manager-taxonomy-meta.php:129
|
1020 |
msgstr ""
|
1021 |
|
1022 |
#: includes/class-wp-job-manager-data-exporter.php:52
|
1023 |
+
#: includes/class-wp-job-manager-post-types.php:1294
|
1024 |
msgid "Company Name"
|
1025 |
msgstr ""
|
1026 |
|
1027 |
#: includes/class-wp-job-manager-data-exporter.php:53
|
1028 |
+
#: includes/class-wp-job-manager-post-types.php:1302
|
1029 |
msgid "Company Website"
|
1030 |
msgstr ""
|
1031 |
|
1032 |
#: includes/class-wp-job-manager-data-exporter.php:54
|
1033 |
+
#: includes/class-wp-job-manager-post-types.php:1311
|
1034 |
msgid "Company Tagline"
|
1035 |
msgstr ""
|
1036 |
|
1037 |
#: includes/class-wp-job-manager-data-exporter.php:55
|
1038 |
+
#: includes/class-wp-job-manager-post-types.php:1319
|
1039 |
msgid "Company Twitter"
|
1040 |
msgstr ""
|
1041 |
|
1042 |
#: includes/class-wp-job-manager-data-exporter.php:56
|
1043 |
+
#: includes/class-wp-job-manager-post-types.php:1327
|
1044 |
msgid "Company Video"
|
1045 |
msgstr ""
|
1046 |
|
1065 |
msgid "(opens in a new tab)"
|
1066 |
msgstr ""
|
1067 |
|
1068 |
+
#: includes/class-wp-job-manager-dependency-checker.php:118
|
1069 |
#. translators: %s is the URL for the page where users can go to update
|
1070 |
#. WordPress.
|
1071 |
+
msgid "Please <a href=\"%s\">update WordPress</a> to avoid issues."
|
1072 |
+
msgstr ""
|
1073 |
+
|
1074 |
+
#: includes/class-wp-job-manager-dependency-checker.php:122
|
1075 |
msgid "<strong>WP Job Manager</strong> requires a more recent version of WordPress."
|
1076 |
msgstr ""
|
1077 |
|
1313 |
msgstr[0] ""
|
1314 |
msgstr[1] ""
|
1315 |
|
1316 |
+
#: includes/class-wp-job-manager-post-types.php:1262
|
1317 |
#: includes/forms/class-wp-job-manager-form-submit-job.php:190
|
1318 |
msgid "Application email/URL"
|
1319 |
msgstr ""
|
1320 |
|
1321 |
+
#: includes/class-wp-job-manager-post-types.php:1263
|
1322 |
#: includes/forms/class-wp-job-manager-form-submit-job.php:191
|
1323 |
msgid "Enter an email address or website URL"
|
1324 |
msgstr ""
|
1325 |
|
1326 |
+
#: includes/class-wp-job-manager-post-types.php:1266
|
1327 |
#: includes/forms/class-wp-job-manager-form-submit-job.php:180
|
1328 |
msgid "Application email"
|
1329 |
msgstr ""
|
1330 |
|
1331 |
+
#: includes/class-wp-job-manager-post-types.php:1267
|
1332 |
#: includes/forms/class-wp-job-manager-form-submit-job.php:181
|
1333 |
msgid "you@example.com"
|
1334 |
msgstr ""
|
1335 |
|
1336 |
+
#: includes/class-wp-job-manager-post-types.php:1269
|
1337 |
#: includes/forms/class-wp-job-manager-form-submit-job.php:185
|
1338 |
msgid "Application URL"
|
1339 |
msgstr ""
|
1340 |
|
1341 |
+
#: includes/class-wp-job-manager-post-types.php:1270
|
1342 |
#: includes/forms/class-wp-job-manager-form-submit-job.php:186
|
1343 |
msgid "https://"
|
1344 |
msgstr ""
|
1345 |
|
1346 |
+
#: includes/class-wp-job-manager-post-types.php:1276
|
1347 |
#: includes/forms/class-wp-job-manager-form-submit-job.php:217
|
1348 |
msgid "e.g. \"London\""
|
1349 |
msgstr ""
|
1350 |
|
1351 |
+
#: includes/class-wp-job-manager-post-types.php:1277
|
1352 |
msgid "Leave this blank if the location is not important."
|
1353 |
msgstr ""
|
1354 |
|
1355 |
+
#: includes/class-wp-job-manager-post-types.php:1286
|
1356 |
msgid ""
|
1357 |
"This field is required for the \"application\" area to appear beneath the "
|
1358 |
"listing."
|
1359 |
msgstr ""
|
1360 |
|
1361 |
+
#: includes/class-wp-job-manager-post-types.php:1312
|
1362 |
msgid "Brief description about the company"
|
1363 |
msgstr ""
|
1364 |
|
1365 |
+
#: includes/class-wp-job-manager-post-types.php:1328
|
1366 |
msgid "URL to the company video"
|
1367 |
msgstr ""
|
1368 |
|
1369 |
+
#: includes/class-wp-job-manager-post-types.php:1337
|
1370 |
msgid "Position Filled"
|
1371 |
msgstr ""
|
1372 |
|
1373 |
+
#: includes/class-wp-job-manager-post-types.php:1343
|
1374 |
msgid "Filled listings will no longer accept applications."
|
1375 |
msgstr ""
|
1376 |
|
1377 |
+
#: includes/class-wp-job-manager-post-types.php:1346
|
1378 |
msgid "Featured Listing"
|
1379 |
msgstr ""
|
1380 |
|
1381 |
+
#: includes/class-wp-job-manager-post-types.php:1348
|
1382 |
msgid ""
|
1383 |
"Featured listings will be sticky during searches, and can be styled "
|
1384 |
"differently."
|
1385 |
msgstr ""
|
1386 |
|
1387 |
+
#: includes/class-wp-job-manager-post-types.php:1356
|
1388 |
msgid "Listing Expiry Date"
|
1389 |
msgstr ""
|
1390 |
|
1435 |
msgid "Listing Expires"
|
1436 |
msgstr ""
|
1437 |
|
1438 |
+
#: includes/class-wp-job-manager-shortcodes.php:423
|
1439 |
+
#: includes/class-wp-job-manager-shortcodes.php:461
|
1440 |
msgid "Load more listings"
|
1441 |
msgstr ""
|
1442 |
|
1482 |
msgstr ""
|
1483 |
|
1484 |
#: includes/class-wp-job-manager.php:439
|
1485 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:422
|
1486 |
#. translators: Placeholder %d is the number of files to that users are limited
|
1487 |
#. to.
|
1488 |
msgid "You are only allowed to upload a maximum of %d files."
|
1586 |
msgstr ""
|
1587 |
|
1588 |
#: includes/forms/class-wp-job-manager-form-submit-job.php:88
|
1589 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:578
|
1590 |
#: templates/job-preview.php:30
|
1591 |
msgid "Preview"
|
1592 |
msgstr ""
|
1652 |
msgid "Logo"
|
1653 |
msgstr ""
|
1654 |
|
1655 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:359
|
1656 |
#. translators: Placeholder %s is the label for the required field.
|
1657 |
msgid "%s is a required field"
|
1658 |
msgstr ""
|
1659 |
|
1660 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:370
|
1661 |
#. translators: Placeholder %s is the field label that is did not validate.
|
1662 |
msgid "%s is invalid"
|
1663 |
msgstr ""
|
1664 |
|
1665 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:385
|
1666 |
+
msgid "Invalid image path."
|
1667 |
msgstr ""
|
1668 |
|
1669 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:395
|
1670 |
+
#: wp-job-manager-functions.php:1363
|
1671 |
#. translators: Placeholder %1$s is field label; %2$s is the file mime type;
|
1672 |
#. %3$s is the allowed mime-types.
|
1673 |
#. translators: %1$s is the file field label; %2$s is the file type; %3$s is
|
1675 |
msgid "\"%1$s\" (filetype %2$s) needs to be one of the following file types: %3$s"
|
1676 |
msgstr ""
|
1677 |
|
1678 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:405
|
1679 |
+
msgid "Invalid attachment provided."
|
1680 |
+
msgstr ""
|
1681 |
+
|
1682 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:440
|
1683 |
msgid "Please enter a valid application email address"
|
1684 |
msgstr ""
|
1685 |
|
1686 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:449
|
1687 |
msgid "Please enter a valid application URL"
|
1688 |
msgstr ""
|
1689 |
|
1690 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:459
|
1691 |
msgid "Please enter a valid application email address or URL"
|
1692 |
msgstr ""
|
1693 |
|
1694 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:637
|
1695 |
msgid "Please enter a username."
|
1696 |
msgstr ""
|
1697 |
|
1698 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:641
|
1699 |
msgid "Please enter a password."
|
1700 |
msgstr ""
|
1701 |
|
1702 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:645
|
1703 |
msgid "Please enter your email address."
|
1704 |
msgstr ""
|
1705 |
|
1706 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:651
|
1707 |
msgid "Passwords must match."
|
1708 |
msgstr ""
|
1709 |
|
1710 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:657
|
1711 |
#. translators: Placeholder %s is the password hint.
|
1712 |
msgid "Invalid Password: %s"
|
1713 |
msgstr ""
|
1714 |
|
1715 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:659
|
1716 |
msgid "Password is not valid."
|
1717 |
msgstr ""
|
1718 |
|
1719 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:682
|
1720 |
msgid "You must be signed in to post a new listing."
|
1721 |
msgstr ""
|
1722 |
|
1723 |
+
#: includes/forms/class-wp-job-manager-form-submit-job.php:705
|
1724 |
#. translators: placeholder is the URL to the job dashboard page.
|
1725 |
msgid ""
|
1726 |
"Draft was saved. Job listing drafts can be resumed from the <a "
|
1771 |
msgid "Hide notice"
|
1772 |
msgstr ""
|
1773 |
|
1774 |
+
#: includes/helper/views/html-licence-key-error.php:15
|
1775 |
+
#. translators: %1$s is the plugin name, %2$s is the license setting page URL.
|
1776 |
+
msgid ""
|
1777 |
+
"There is a problem with the license for \"%1$s\". Please <a "
|
1778 |
+
"href=\"%2$s\">manage the license</a> to check for a solution and continue "
|
1779 |
+
"receiving updates."
|
1780 |
+
msgstr ""
|
1781 |
+
|
1782 |
+
#: includes/helper/views/html-licence-key-notice.php:15
|
1783 |
+
#. translators: %1$s is the license setting page URL, %2$s is the plugin name.
|
1784 |
+
msgid ""
|
1785 |
+
"<a href=\"%1$s\">Please enter your license key</a> to get updates for "
|
1786 |
+
"\"%2$s\"."
|
1787 |
+
msgstr ""
|
1788 |
+
|
1789 |
#: includes/helper/views/html-licences.php:56
|
1790 |
#: includes/helper/views/html-licences.php:69
|
1791 |
msgid "License"
|
1796 |
msgid "Email"
|
1797 |
msgstr ""
|
1798 |
|
1799 |
+
#: includes/helper/views/html-licences.php:60
|
1800 |
+
#: includes/helper/views/html-licences.php:73
|
1801 |
+
msgid "Email address"
|
1802 |
+
msgstr ""
|
1803 |
+
|
1804 |
#: includes/helper/views/html-licences.php:63
|
1805 |
msgid "Deactivate License"
|
1806 |
msgstr ""
|
1807 |
|
1808 |
+
#: includes/helper/views/html-licences.php:84
|
1809 |
+
#. translators: Placeholder %s is the lost license key URL.
|
1810 |
+
msgid "Lost your license key? <a href=\"%s\">Retrieve it here</a>."
|
1811 |
+
msgstr ""
|
1812 |
+
|
1813 |
+
#: includes/helper/views/html-licences.php:86
|
1814 |
msgid "No plugins are activated that have licenses managed by WP Job Manager."
|
1815 |
msgstr ""
|
1816 |
|
1904 |
msgid "Your account"
|
1905 |
msgstr ""
|
1906 |
|
1907 |
+
#: templates/account-signin.php:26
|
1908 |
+
#. translators: Placeholder %s is the username.
|
1909 |
msgid "You are currently signed in as <strong>%s</strong>."
|
1910 |
msgstr ""
|
1911 |
|
1912 |
+
#: templates/account-signin.php:29
|
1913 |
msgid "Sign out"
|
1914 |
msgstr ""
|
1915 |
|
1916 |
+
#: templates/account-signin.php:40
|
1917 |
msgid "Have an account?"
|
1918 |
msgstr ""
|
1919 |
|
1920 |
+
#: templates/account-signin.php:42 templates/job-dashboard-login.php:20
|
1921 |
msgid "Sign in"
|
1922 |
msgstr ""
|
1923 |
|
1924 |
+
#: templates/account-signin.php:47
|
1925 |
+
#. translators: Placeholder %s is the optionally text.
|
1926 |
msgid ""
|
1927 |
"If you don't have an account you can %screate one below by entering your "
|
1928 |
"email address/username."
|
1929 |
msgstr ""
|
1930 |
|
1931 |
+
#: templates/account-signin.php:47
|
1932 |
msgid "optionally"
|
1933 |
msgstr ""
|
1934 |
|
1935 |
+
#: templates/account-signin.php:49
|
1936 |
msgid "Your account details will be confirmed via email."
|
1937 |
msgstr ""
|
1938 |
|
1939 |
+
#: templates/account-signin.php:54
|
1940 |
msgid "You must sign in to create a new listing."
|
1941 |
msgstr ""
|
1942 |
|
1943 |
+
#: templates/account-signin.php:65 templates/job-submit.php:43
|
1944 |
#: templates/job-submit.php:60
|
1945 |
msgid "(optional)"
|
1946 |
msgstr ""
|
1982 |
msgid "Visit <a href=\"%s\">WordPress admin</a> to manage the listing."
|
1983 |
msgstr ""
|
1984 |
|
1985 |
+
#: templates/emails/admin-new-job.php:27
|
1986 |
+
#. translators: %1$s placeholder is URL to the blog. %2$s placeholder is the
|
1987 |
+
#. name of the site.
|
1988 |
msgid "A new job listing has been submitted to <a href=\"%s\">%s</a>."
|
1989 |
msgstr ""
|
1990 |
|
1991 |
+
#: templates/emails/admin-new-job.php:34
|
1992 |
+
#: templates/emails/plain/admin-new-job.php:27
|
1993 |
msgid "It has been published and is now available to the public."
|
1994 |
msgstr ""
|
1995 |
|
1996 |
+
#: templates/emails/admin-new-job.php:40
|
1997 |
+
#. translators: Placeholder %s is the admin job listings URL.
|
1998 |
msgid ""
|
1999 |
"It is awaiting approval by an administrator in <a href=\"%s\">WordPress "
|
2000 |
"admin</a>."
|
2001 |
msgstr ""
|
2002 |
|
2003 |
+
#: templates/emails/admin-updated-job.php:26
|
2004 |
+
#. translators: %1$s placeholder is URL to the blog. %2$s placeholder is the
|
2005 |
+
#. name of the site.
|
2006 |
msgid "A job listing has been updated on <a href=\"%s\">%s</a>."
|
2007 |
msgstr ""
|
2008 |
|
2009 |
+
#: templates/emails/admin-updated-job.php:29
|
2010 |
+
#: templates/emails/plain/admin-updated-job.php:27
|
2011 |
msgid "The changes have been published and are now available to the public."
|
2012 |
msgstr ""
|
2013 |
|
2014 |
+
#: templates/emails/admin-updated-job.php:34
|
2015 |
+
#. translators: Placeholder %s is the admin job listings URL.
|
2016 |
msgid ""
|
2017 |
"The job listing is not publicly available until the changes are approved by "
|
2018 |
"an administrator in the site's <a href=\"%s\">WordPress admin</a>."
|
2019 |
msgstr ""
|
2020 |
|
2021 |
+
#: templates/emails/employer-expiring-job.php:33
|
2022 |
+
#. translators: %1$s placeholder is URL to the blog. %2$s placeholder is the
|
2023 |
+
#. name of the site.
|
2024 |
msgid "The following job listing is expiring today from <a href=\"%s\">%s</a>."
|
2025 |
msgstr ""
|
2026 |
|
2027 |
+
#: templates/emails/employer-expiring-job.php:42
|
2028 |
+
#. translators: %1$s placeholder is URL to the blog. %2$s placeholder is the
|
2029 |
+
#. name of the site.
|
2030 |
msgid "The following job listing is expiring soon from <a href=\"%s\">%s</a>."
|
2031 |
msgstr ""
|
2032 |
|
2033 |
+
#: templates/emails/employer-expiring-job.php:51
|
2034 |
+
#. translators: Placeholder %s is the job listing dashboard URL.
|
2035 |
msgid "Visit the <a href=\"%s\">job listing dashboard</a> to manage the listing."
|
2036 |
msgstr ""
|
2037 |
|
2038 |
+
#: templates/emails/plain/admin-expiring-job.php:31
|
2039 |
+
#: templates/emails/plain/employer-expiring-job.php:30
|
2040 |
+
#. translators: %1$s placeholder is the name of the site, %2$s placeholder is
|
2041 |
+
#. URL to the blog.
|
2042 |
+
msgid "The following job listing is expiring today from %1$s (%2$s)."
|
2043 |
msgstr ""
|
2044 |
|
2045 |
+
#: templates/emails/plain/admin-expiring-job.php:38
|
2046 |
+
#: templates/emails/plain/employer-expiring-job.php:33
|
2047 |
+
#. translators: %1$s placeholder is the name of the site, %2$s placeholder is
|
2048 |
+
#. URL to the blog.
|
2049 |
+
msgid "The following job listing is expiring soon from %1$s (%2$s)."
|
2050 |
msgstr ""
|
2051 |
|
2052 |
+
#: templates/emails/plain/admin-expiring-job.php:46
|
2053 |
+
#. translators: Placeholder %s is the edit job URL.
|
2054 |
msgid "Visit WordPress admin (%s) to manage the listing."
|
2055 |
msgstr ""
|
2056 |
|
2057 |
+
#: templates/emails/plain/admin-new-job.php:24
|
2058 |
+
#. translators: %1$s placeholder is the name of the site, %2$s placeholder is
|
2059 |
+
#. URL to the blog.
|
2060 |
+
msgid "A new job listing has been submitted to %1$s (%2$s)."
|
2061 |
msgstr ""
|
2062 |
|
2063 |
+
#: templates/emails/plain/admin-new-job.php:31
|
2064 |
+
#. translators: Placeholder %s is the admin job listings URL.
|
2065 |
msgid "It is awaiting approval by an administrator in WordPress admin (%s)."
|
2066 |
msgstr ""
|
2067 |
|
2068 |
+
#: templates/emails/plain/admin-updated-job.php:24
|
2069 |
+
#. translators: %1$s placeholder is the name of the site, %2$s placeholder is
|
2070 |
+
#. URL to the blog.
|
2071 |
+
msgid "A job listing has been updated on %1$s (%2$s)."
|
2072 |
msgstr ""
|
2073 |
|
2074 |
+
#: templates/emails/plain/admin-updated-job.php:31
|
2075 |
+
#. translators: Placeholder %s is the admin job listings URL.
|
2076 |
msgid ""
|
2077 |
"The job listing is not publicly available until the changes are approved by "
|
2078 |
"an administrator in the site's WordPress admin (%s)."
|
2079 |
msgstr ""
|
2080 |
|
2081 |
+
#: templates/emails/plain/employer-expiring-job.php:36
|
2082 |
+
#. translators: Placeholder %s is the job listing dashboard URL.
|
2083 |
msgid "Visit the job listing dashboard (%s) to manage the listing."
|
2084 |
msgstr ""
|
2085 |
|
2088 |
msgstr ""
|
2089 |
|
2090 |
#: templates/form-fields/multiselect-field.php:20
|
2091 |
+
#: wp-job-manager-functions.php:1130
|
2092 |
msgid "No results match"
|
2093 |
msgstr ""
|
2094 |
|
2095 |
#: templates/form-fields/multiselect-field.php:20
|
2096 |
+
#: wp-job-manager-functions.php:1131
|
2097 |
msgid "Select Some Options"
|
2098 |
msgstr ""
|
2099 |
|
2102 |
msgid "remove"
|
2103 |
msgstr ""
|
2104 |
|
2105 |
+
#: templates/job-application-email.php:19
|
2106 |
+
#. translators: %1$s is the email address, %2$s is the subject query args.
|
2107 |
msgid ""
|
2108 |
"To apply for this job <strong>email your details to</strong> <a "
|
2109 |
"class=\"job_application_email\" href=\"mailto:%1$s%2$s\">%1$s</a>"
|
2199 |
msgid "Save Draft"
|
2200 |
msgstr ""
|
2201 |
|
2202 |
+
#: templates/job-submitted.php:25
|
2203 |
+
#. translators: %1$s is the job listing post type name, %2$s is the job listing
|
2204 |
+
#. URL.
|
2205 |
+
msgid ""
|
2206 |
+
"%1$s listed successfully. To view your listing <a href=\"%2$s\">click "
|
2207 |
+
"here</a>."
|
2208 |
msgstr ""
|
2209 |
|
2210 |
+
#: templates/job-submitted.php:35
|
2211 |
+
#. translators: Placeholder %s is the job listing post type name.
|
2212 |
msgid "%s submitted successfully. Your listing will be visible once approved."
|
2213 |
msgstr ""
|
2214 |
|
2268 |
msgid "Passwords must be at least 8 characters long."
|
2269 |
msgstr ""
|
2270 |
|
2271 |
+
#: wp-job-manager-functions.php:1129
|
2272 |
msgid "Choose a category…"
|
2273 |
msgstr ""
|
2274 |
|
2275 |
+
#: wp-job-manager-functions.php:1366
|
2276 |
#. translators: %s is the list of allowed file types.
|
2277 |
msgid "Uploaded files need to be one of the following file types: %s"
|
2278 |
msgstr ""
|
2366 |
msgstr ""
|
2367 |
|
2368 |
#: includes/admin/class-wp-job-manager-permalink-settings.php:108
|
2369 |
+
#: includes/class-wp-job-manager-post-types.php:997
|
2370 |
msgctxt "Job permalink - resave permalinks after changing this"
|
2371 |
msgid "job"
|
2372 |
msgstr ""
|
2373 |
|
2374 |
#: includes/admin/class-wp-job-manager-permalink-settings.php:117
|
2375 |
+
#: includes/class-wp-job-manager-post-types.php:998
|
2376 |
msgctxt "Job category slug - resave permalinks after changing this"
|
2377 |
msgid "job-category"
|
2378 |
msgstr ""
|
2379 |
|
2380 |
#: includes/admin/class-wp-job-manager-permalink-settings.php:126
|
2381 |
+
#: includes/class-wp-job-manager-post-types.php:999
|
2382 |
msgctxt "Job type slug - resave permalinks after changing this"
|
2383 |
msgid "job-type"
|
2384 |
msgstr ""
|
2430 |
msgid "Active"
|
2431 |
msgstr ""
|
2432 |
|
2433 |
+
#: includes/class-wp-job-manager-post-types.php:981
|
2434 |
msgctxt "Post type archive slug - resave permalinks after changing this"
|
2435 |
msgid "jobs"
|
2436 |
msgstr ""
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Tags: job manager, job listing, job board, job management, job lists, job list,
|
|
4 |
Requires at least: 4.9
|
5 |
Tested up to: 5.4
|
6 |
Requires PHP: 5.6
|
7 |
-
Stable tag: 1.34.
|
8 |
License: GPLv3
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
@@ -23,7 +23,7 @@ WP Job Manager is a **lightweight** job listing plugin for adding job-board like
|
|
23 |
* Each listing can be tied to an email or website address so that job seekers can apply to the jobs.
|
24 |
* Searches also display RSS links to allow job seekers to be alerted to new jobs matching their search.
|
25 |
* Allow logged in employers to view, edit, mark filled, or delete their active job listings.
|
26 |
-
* Developer friendly code
|
27 |
|
28 |
The plugin comes with several shortcodes to output jobs in various formats, and since its built with Custom Post Types you are free to extend it further through themes.
|
29 |
|
@@ -153,6 +153,22 @@ It then creates a database based on the parameters passed to it.
|
|
153 |
|
154 |
== Changelog ==
|
155 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
156 |
= 1.34.1 =
|
157 |
* Templates Updated: `job-submitted.php`, `job-dashboard.php`.
|
158 |
* Enhancement: Email notifications are sent separately if multiple recipients are listed.
|
4 |
Requires at least: 4.9
|
5 |
Tested up to: 5.4
|
6 |
Requires PHP: 5.6
|
7 |
+
Stable tag: 1.34.2
|
8 |
License: GPLv3
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
23 |
* Each listing can be tied to an email or website address so that job seekers can apply to the jobs.
|
24 |
* Searches also display RSS links to allow job seekers to be alerted to new jobs matching their search.
|
25 |
* Allow logged in employers to view, edit, mark filled, or delete their active job listings.
|
26 |
+
* Developer friendly code - Custom Post Types, endpoints & template files.
|
27 |
|
28 |
The plugin comes with several shortcodes to output jobs in various formats, and since its built with Custom Post Types you are free to extend it further through themes.
|
29 |
|
153 |
|
154 |
== Changelog ==
|
155 |
|
156 |
+
= 1.34.2 =
|
157 |
+
* Enhancement: New filter to skip validation for application field.
|
158 |
+
* Enhancement: New method for clearing fields.
|
159 |
+
* Fix: Improve TwentyTwenty theme compatibility (@JuanchoPestana)
|
160 |
+
* Fix: Issue in RSS feed with empty query parameters.
|
161 |
+
* Fix: Issue on Jobs page with empty query parameters.
|
162 |
+
* Fix: Conflict with search query parameters on Jobs page.
|
163 |
+
* Fix: Ensuring hidden jobs do not display in RSS feed.
|
164 |
+
* Fix: Image validation when posting a job.
|
165 |
+
* Fix: JS error in file upload.
|
166 |
+
* Fix: Removed extra whitespace in textarea settings fields.
|
167 |
+
* Fix: Several untranslatable strings are now translatable.
|
168 |
+
* Fix: CC header in emails.
|
169 |
+
* Fix: Search category query sanitization.
|
170 |
+
* Fix: Remove PHP notices. (@truongwp)
|
171 |
+
|
172 |
= 1.34.1 =
|
173 |
* Templates Updated: `job-submitted.php`, `job-dashboard.php`.
|
174 |
* Enhancement: Email notifications are sent separately if multiple recipients are listed.
|
templates/account-signin.php
CHANGED
@@ -22,6 +22,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
22 |
<div class="field account-sign-in">
|
23 |
<?php
|
24 |
$user = wp_get_current_user();
|
|
|
25 |
printf( wp_kses_post( __( 'You are currently signed in as <strong>%s</strong>.', 'wp-job-manager' ) ), esc_html( $user->user_login ) );
|
26 |
?>
|
27 |
|
@@ -42,6 +43,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
42 |
|
43 |
<?php if ( $registration_enabled ) : ?>
|
44 |
|
|
|
45 |
<?php printf( esc_html__( 'If you don\'t have an account you can %screate one below by entering your email address/username.', 'wp-job-manager' ), $account_required ? '' : esc_html__( 'optionally', 'wp-job-manager' ) . ' ' ); ?>
|
46 |
<?php if ( $use_standard_password_email ) : ?>
|
47 |
<?php printf( esc_html__( 'Your account details will be confirmed via email.', 'wp-job-manager' ) ); ?>
|
22 |
<div class="field account-sign-in">
|
23 |
<?php
|
24 |
$user = wp_get_current_user();
|
25 |
+
// translators: Placeholder %s is the username.
|
26 |
printf( wp_kses_post( __( 'You are currently signed in as <strong>%s</strong>.', 'wp-job-manager' ) ), esc_html( $user->user_login ) );
|
27 |
?>
|
28 |
|
43 |
|
44 |
<?php if ( $registration_enabled ) : ?>
|
45 |
|
46 |
+
<?php // translators: Placeholder %s is the optionally text. ?>
|
47 |
<?php printf( esc_html__( 'If you don\'t have an account you can %screate one below by entering your email address/username.', 'wp-job-manager' ), $account_required ? '' : esc_html__( 'optionally', 'wp-job-manager' ) . ' ' ); ?>
|
48 |
<?php if ( $use_standard_password_email ) : ?>
|
49 |
<?php printf( esc_html__( 'Your account details will be confirmed via email.', 'wp-job-manager' ) ); ?>
|
templates/emails/admin-new-job.php
CHANGED
@@ -23,6 +23,7 @@ $job = $args['job'];
|
|
23 |
<p><?php
|
24 |
echo wp_kses_post(
|
25 |
sprintf(
|
|
|
26 |
__( 'A new job listing has been submitted to <a href="%s">%s</a>.', 'wp-job-manager' ),
|
27 |
home_url(),
|
28 |
get_bloginfo( 'name' )
|
@@ -35,6 +36,7 @@ $job = $args['job'];
|
|
35 |
case 'pending':
|
36 |
echo wp_kses_post(
|
37 |
sprintf(
|
|
|
38 |
' ' . __( 'It is awaiting approval by an administrator in <a href="%s">WordPress admin</a>.','wp-job-manager' ),
|
39 |
esc_url( admin_url( 'edit.php?post_type=job_listing' ) )
|
40 |
)
|
23 |
<p><?php
|
24 |
echo wp_kses_post(
|
25 |
sprintf(
|
26 |
+
// translators: %1$s placeholder is URL to the blog. %2$s placeholder is the name of the site.
|
27 |
__( 'A new job listing has been submitted to <a href="%s">%s</a>.', 'wp-job-manager' ),
|
28 |
home_url(),
|
29 |
get_bloginfo( 'name' )
|
36 |
case 'pending':
|
37 |
echo wp_kses_post(
|
38 |
sprintf(
|
39 |
+
// translators: Placeholder %s is the admin job listings URL.
|
40 |
' ' . __( 'It is awaiting approval by an administrator in <a href="%s">WordPress admin</a>.','wp-job-manager' ),
|
41 |
esc_url( admin_url( 'edit.php?post_type=job_listing' ) )
|
42 |
)
|
templates/emails/admin-updated-job.php
CHANGED
@@ -22,6 +22,7 @@ $job = $args['job'];
|
|
22 |
?>
|
23 |
<p><?php
|
24 |
echo wp_kses_post(
|
|
|
25 |
sprintf( __( 'A job listing has been updated on <a href="%s">%s</a>.', 'wp-job-manager' ), home_url(), esc_html( get_bloginfo( 'name' ) ) ) );
|
26 |
switch ( $job->post_status ) {
|
27 |
case 'publish':
|
@@ -29,6 +30,7 @@ $job = $args['job'];
|
|
29 |
break;
|
30 |
case 'pending':
|
31 |
echo wp_kses_post( sprintf(
|
|
|
32 |
' ' . __( 'The job listing is not publicly available until the changes are approved by an administrator in the site\'s <a href="%s">WordPress admin</a>.', 'wp-job-manager' ),
|
33 |
esc_url( admin_url( 'edit.php?post_type=job_listing' ) )
|
34 |
) );
|
22 |
?>
|
23 |
<p><?php
|
24 |
echo wp_kses_post(
|
25 |
+
// translators: %1$s placeholder is URL to the blog. %2$s placeholder is the name of the site.
|
26 |
sprintf( __( 'A job listing has been updated on <a href="%s">%s</a>.', 'wp-job-manager' ), home_url(), esc_html( get_bloginfo( 'name' ) ) ) );
|
27 |
switch ( $job->post_status ) {
|
28 |
case 'publish':
|
30 |
break;
|
31 |
case 'pending':
|
32 |
echo wp_kses_post( sprintf(
|
33 |
+
// translators: Placeholder %s is the admin job listings URL.
|
34 |
' ' . __( 'The job listing is not publicly available until the changes are approved by an administrator in the site\'s <a href="%s">WordPress admin</a>.', 'wp-job-manager' ),
|
35 |
esc_url( admin_url( 'edit.php?post_type=job_listing' ) )
|
36 |
) );
|
templates/emails/employer-expiring-job.php
CHANGED
@@ -29,6 +29,7 @@ echo '<p>';
|
|
29 |
if ( $expiring_today ) {
|
30 |
echo wp_kses_post(
|
31 |
sprintf(
|
|
|
32 |
__( 'The following job listing is expiring today from <a href="%s">%s</a>.', 'wp-job-manager' ),
|
33 |
home_url(),
|
34 |
get_bloginfo( 'name' )
|
@@ -37,6 +38,7 @@ if ( $expiring_today ) {
|
|
37 |
} else {
|
38 |
echo wp_kses_post(
|
39 |
sprintf(
|
|
|
40 |
__( 'The following job listing is expiring soon from <a href="%s">%s</a>.', 'wp-job-manager' ),
|
41 |
home_url(),
|
42 |
get_bloginfo( 'name' )
|
@@ -45,6 +47,7 @@ if ( $expiring_today ) {
|
|
45 |
}
|
46 |
echo wp_kses_post(
|
47 |
sprintf(
|
|
|
48 |
' ' . __( 'Visit the <a href="%s">job listing dashboard</a> to manage the listing.', 'wp-job-manager' ),
|
49 |
esc_url( job_manager_get_permalink( 'job_dashboard' ) )
|
50 |
)
|
29 |
if ( $expiring_today ) {
|
30 |
echo wp_kses_post(
|
31 |
sprintf(
|
32 |
+
// translators: %1$s placeholder is URL to the blog. %2$s placeholder is the name of the site.
|
33 |
__( 'The following job listing is expiring today from <a href="%s">%s</a>.', 'wp-job-manager' ),
|
34 |
home_url(),
|
35 |
get_bloginfo( 'name' )
|
38 |
} else {
|
39 |
echo wp_kses_post(
|
40 |
sprintf(
|
41 |
+
// translators: %1$s placeholder is URL to the blog. %2$s placeholder is the name of the site.
|
42 |
__( 'The following job listing is expiring soon from <a href="%s">%s</a>.', 'wp-job-manager' ),
|
43 |
home_url(),
|
44 |
get_bloginfo( 'name' )
|
47 |
}
|
48 |
echo wp_kses_post(
|
49 |
sprintf(
|
50 |
+
// translators: Placeholder %s is the job listing dashboard URL.
|
51 |
' ' . __( 'Visit the <a href="%s">job listing dashboard</a> to manage the listing.', 'wp-job-manager' ),
|
52 |
esc_url( job_manager_get_permalink( 'job_dashboard' ) )
|
53 |
)
|
templates/emails/plain/admin-expiring-job.php
CHANGED
@@ -27,19 +27,22 @@ $expiring_today = $args['expiring_today'];
|
|
27 |
|
28 |
if ( $expiring_today ) {
|
29 |
printf(
|
30 |
-
|
|
|
31 |
esc_html( get_bloginfo( 'name' ) ),
|
32 |
esc_url( home_url() )
|
33 |
);
|
34 |
} else {
|
35 |
printf(
|
36 |
-
|
|
|
37 |
esc_html( get_bloginfo( 'name' ) ),
|
38 |
esc_url( home_url() )
|
39 |
);
|
40 |
}
|
41 |
$edit_post_link = admin_url( sprintf( 'post.php?post=%d&action=edit', $job->ID ) );
|
42 |
printf(
|
|
|
43 |
' ' . esc_html__( 'Visit WordPress admin (%s) to manage the listing.', 'wp-job-manager' ),
|
44 |
esc_url( $edit_post_link )
|
45 |
);
|
27 |
|
28 |
if ( $expiring_today ) {
|
29 |
printf(
|
30 |
+
// translators: %1$s placeholder is the name of the site, %2$s placeholder is URL to the blog.
|
31 |
+
esc_html__( 'The following job listing is expiring today from %1$s (%2$s).', 'wp-job-manager' ),
|
32 |
esc_html( get_bloginfo( 'name' ) ),
|
33 |
esc_url( home_url() )
|
34 |
);
|
35 |
} else {
|
36 |
printf(
|
37 |
+
// translators: %1$s placeholder is the name of the site, %2$s placeholder is URL to the blog.
|
38 |
+
esc_html__( 'The following job listing is expiring soon from %1$s (%2$s).', 'wp-job-manager' ),
|
39 |
esc_html( get_bloginfo( 'name' ) ),
|
40 |
esc_url( home_url() )
|
41 |
);
|
42 |
}
|
43 |
$edit_post_link = admin_url( sprintf( 'post.php?post=%d&action=edit', $job->ID ) );
|
44 |
printf(
|
45 |
+
// translators: Placeholder %s is the edit job URL.
|
46 |
' ' . esc_html__( 'Visit WordPress admin (%s) to manage the listing.', 'wp-job-manager' ),
|
47 |
esc_url( $edit_post_link )
|
48 |
);
|
templates/emails/plain/admin-new-job.php
CHANGED
@@ -20,12 +20,14 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
20 |
*/
|
21 |
$job = $args['job'];
|
22 |
|
23 |
-
|
|
|
24 |
switch ( $job->post_status ) {
|
25 |
case 'publish':
|
26 |
printf( ' ' . esc_html__( 'It has been published and is now available to the public.', 'wp-job-manager' ) );
|
27 |
break;
|
28 |
case 'pending':
|
|
|
29 |
printf( ' ' . esc_html__( 'It is awaiting approval by an administrator in WordPress admin (%s).', 'wp-job-manager' ), esc_url( admin_url( 'edit.php?post_type=job_listing' ) ) );
|
30 |
break;
|
31 |
}
|
20 |
*/
|
21 |
$job = $args['job'];
|
22 |
|
23 |
+
// translators: %1$s placeholder is the name of the site, %2$s placeholder is URL to the blog.
|
24 |
+
printf( esc_html__( 'A new job listing has been submitted to %1$s (%2$s).', 'wp-job-manager' ), esc_html( get_bloginfo( 'name' ) ), esc_url( home_url() ) );
|
25 |
switch ( $job->post_status ) {
|
26 |
case 'publish':
|
27 |
printf( ' ' . esc_html__( 'It has been published and is now available to the public.', 'wp-job-manager' ) );
|
28 |
break;
|
29 |
case 'pending':
|
30 |
+
// translators: Placeholder %s is the admin job listings URL.
|
31 |
printf( ' ' . esc_html__( 'It is awaiting approval by an administrator in WordPress admin (%s).', 'wp-job-manager' ), esc_url( admin_url( 'edit.php?post_type=job_listing' ) ) );
|
32 |
break;
|
33 |
}
|
templates/emails/plain/admin-updated-job.php
CHANGED
@@ -20,12 +20,14 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
20 |
*/
|
21 |
$job = $args['job'];
|
22 |
|
23 |
-
|
|
|
24 |
switch ( $job->post_status ) {
|
25 |
case 'publish':
|
26 |
printf( ' ' . esc_html__( 'The changes have been published and are now available to the public.', 'wp-job-manager' ) );
|
27 |
break;
|
28 |
case 'pending':
|
|
|
29 |
printf( ' ' . esc_html__( 'The job listing is not publicly available until the changes are approved by an administrator in the site\'s WordPress admin (%s).', 'wp-job-manager' ), esc_url( admin_url( 'edit.php?post_type=job_listing' ) ) );
|
30 |
break;
|
31 |
}
|
20 |
*/
|
21 |
$job = $args['job'];
|
22 |
|
23 |
+
// translators: %1$s placeholder is the name of the site, %2$s placeholder is URL to the blog.
|
24 |
+
printf( esc_html__( 'A job listing has been updated on %1$s (%2$s).', 'wp-job-manager' ), esc_html( get_bloginfo( 'name' ) ), esc_url( home_url() ) );
|
25 |
switch ( $job->post_status ) {
|
26 |
case 'publish':
|
27 |
printf( ' ' . esc_html__( 'The changes have been published and are now available to the public.', 'wp-job-manager' ) );
|
28 |
break;
|
29 |
case 'pending':
|
30 |
+
// translators: Placeholder %s is the admin job listings URL.
|
31 |
printf( ' ' . esc_html__( 'The job listing is not publicly available until the changes are approved by an administrator in the site\'s WordPress admin (%s).', 'wp-job-manager' ), esc_url( admin_url( 'edit.php?post_type=job_listing' ) ) );
|
32 |
break;
|
33 |
}
|
templates/emails/plain/employer-expiring-job.php
CHANGED
@@ -26,10 +26,13 @@ $job = $args['job'];
|
|
26 |
$expiring_today = $args['expiring_today'];
|
27 |
|
28 |
if ( $expiring_today ) {
|
29 |
-
|
|
|
30 |
} else {
|
31 |
-
|
|
|
32 |
}
|
|
|
33 |
printf( ' ' . esc_html__( 'Visit the job listing dashboard (%s) to manage the listing.', 'wp-job-manager' ), esc_url( job_manager_get_permalink( 'job_dashboard' ) ) );
|
34 |
|
35 |
/**
|
26 |
$expiring_today = $args['expiring_today'];
|
27 |
|
28 |
if ( $expiring_today ) {
|
29 |
+
// translators: %1$s placeholder is the name of the site, %2$s placeholder is URL to the blog.
|
30 |
+
printf( esc_html__( 'The following job listing is expiring today from %1$s (%2$s).', 'wp-job-manager' ), esc_html( get_bloginfo( 'name' ) ), esc_url( home_url() ) );
|
31 |
} else {
|
32 |
+
// translators: %1$s placeholder is the name of the site, %2$s placeholder is URL to the blog.
|
33 |
+
printf( esc_html__( 'The following job listing is expiring soon from %1$s (%2$s).', 'wp-job-manager' ), esc_html( get_bloginfo( 'name' ) ), esc_url( home_url() ) );
|
34 |
}
|
35 |
+
// translators: Placeholder %s is the job listing dashboard URL.
|
36 |
printf( ' ' . esc_html__( 'Visit the job listing dashboard (%s) to manage the listing.', 'wp-job-manager' ), esc_url( job_manager_get_permalink( 'job_dashboard' ) ) );
|
37 |
|
38 |
/**
|
templates/form-fields/wp-editor-field.php
CHANGED
@@ -15,24 +15,29 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
15 |
exit; // Exit if accessed directly.
|
16 |
}
|
17 |
|
18 |
-
$editor = apply_filters(
|
19 |
-
'
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
'
|
25 |
-
'
|
26 |
-
'
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
|
|
|
|
|
|
|
|
37 |
wp_editor( isset( $field['value'] ) ? wp_kses_post( $field['value'] ) : '', $key, $editor );
|
38 |
-
if ( ! empty( $field['description'] ) ) :
|
|
15 |
exit; // Exit if accessed directly.
|
16 |
}
|
17 |
|
18 |
+
$editor = apply_filters(
|
19 |
+
'submit_job_form_wp_editor_args',
|
20 |
+
[
|
21 |
+
'textarea_name' => isset( $field['name'] ) ? $field['name'] : $key,
|
22 |
+
'media_buttons' => false,
|
23 |
+
'textarea_rows' => 8,
|
24 |
+
'quicktags' => false,
|
25 |
+
'editor_css' => '<style> .mce-top-part button { background-color: rgba(0,0,0,0.0) !important; } </style>',
|
26 |
+
'tinymce' => [
|
27 |
+
'plugins' => 'lists,paste,tabfocus,wplink,wordpress',
|
28 |
+
'paste_as_text' => true,
|
29 |
+
'paste_auto_cleanup_on_paste' => true,
|
30 |
+
'paste_remove_spans' => true,
|
31 |
+
'paste_remove_styles' => true,
|
32 |
+
'paste_remove_styles_if_webkit' => true,
|
33 |
+
'paste_strip_class_attributes' => true,
|
34 |
+
'toolbar1' => 'bold,italic,|,bullist,numlist,|,link,unlink,|,undo,redo',
|
35 |
+
'toolbar2' => '',
|
36 |
+
'toolbar3' => '',
|
37 |
+
'toolbar4' => '',
|
38 |
+
],
|
39 |
+
]
|
40 |
+
);
|
41 |
wp_editor( isset( $field['value'] ) ? wp_kses_post( $field['value'] ) : '', $key, $editor );
|
42 |
+
if ( ! empty( $field['description'] ) ) :
|
43 |
+
?><small class="description"><?php echo wp_kses_post( $field['description'] ); ?></small><?php endif; ?>
|
templates/job-application-email.php
CHANGED
@@ -15,4 +15,5 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
15 |
exit; // Exit if accessed directly.
|
16 |
}
|
17 |
?>
|
|
|
18 |
<p><?php printf( wp_kses_post( __( 'To apply for this job <strong>email your details to</strong> <a class="job_application_email" href="mailto:%1$s%2$s">%1$s</a>', 'wp-job-manager' ) ), esc_html( $apply->email ), '?subject=' . rawurlencode( $apply->subject ) ); ?></p>
|
15 |
exit; // Exit if accessed directly.
|
16 |
}
|
17 |
?>
|
18 |
+
<?php // translators: %1$s is the email address, %2$s is the subject query args. ?>
|
19 |
<p><?php printf( wp_kses_post( __( 'To apply for this job <strong>email your details to</strong> <a class="job_application_email" href="mailto:%1$s%2$s">%1$s</a>', 'wp-job-manager' ) ), esc_html( $apply->email ), '?subject=' . rawurlencode( $apply->subject ) ); ?></p>
|
templates/job-submitted.php
CHANGED
@@ -21,7 +21,8 @@ switch ( $job->post_status ) :
|
|
21 |
case 'publish' :
|
22 |
echo '<div class="job-manager-message">' . wp_kses_post(
|
23 |
sprintf(
|
24 |
-
|
|
|
25 |
esc_html( $wp_post_types['job_listing']->labels->singular_name ),
|
26 |
get_permalink( $job->ID )
|
27 |
)
|
@@ -30,6 +31,7 @@ switch ( $job->post_status ) :
|
|
30 |
case 'pending' :
|
31 |
echo '<div class="job-manager-message">' . wp_kses_post(
|
32 |
sprintf(
|
|
|
33 |
esc_html__( '%s submitted successfully. Your listing will be visible once approved.', 'wp-job-manager' ),
|
34 |
esc_html( $wp_post_types['job_listing']->labels->singular_name )
|
35 |
)
|
21 |
case 'publish' :
|
22 |
echo '<div class="job-manager-message">' . wp_kses_post(
|
23 |
sprintf(
|
24 |
+
// translators: %1$s is the job listing post type name, %2$s is the job listing URL.
|
25 |
+
__( '%1$s listed successfully. To view your listing <a href="%2$s">click here</a>.', 'wp-job-manager' ),
|
26 |
esc_html( $wp_post_types['job_listing']->labels->singular_name ),
|
27 |
get_permalink( $job->ID )
|
28 |
)
|
31 |
case 'pending' :
|
32 |
echo '<div class="job-manager-message">' . wp_kses_post(
|
33 |
sprintf(
|
34 |
+
// translators: Placeholder %s is the job listing post type name.
|
35 |
esc_html__( '%s submitted successfully. Your listing will be visible once approved.', 'wp-job-manager' ),
|
36 |
esc_html( $wp_post_types['job_listing']->labels->singular_name )
|
37 |
)
|
templates/pagination.php
CHANGED
@@ -21,6 +21,15 @@ if ( $max_num_pages <= 1 ) {
|
|
21 |
?>
|
22 |
<nav class="job-manager-pagination">
|
23 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
echo paginate_links( apply_filters( 'job_manager_pagination_args', [
|
25 |
'base' => esc_url_raw( str_replace( 999999999, '%#%', get_pagenum_link( 999999999, false ) ) ),
|
26 |
'format' => '',
|
21 |
?>
|
22 |
<nav class="job-manager-pagination">
|
23 |
<?php
|
24 |
+
/**
|
25 |
+
* Filter the paginated link for WP Job Manager catalog pages.
|
26 |
+
*
|
27 |
+
* @see https://codex.wordpress.org/Function_Reference/paginate_links
|
28 |
+
*
|
29 |
+
* @since 1.4.0
|
30 |
+
*
|
31 |
+
* @param array $args The pagination arguments.
|
32 |
+
*/
|
33 |
echo paginate_links( apply_filters( 'job_manager_pagination_args', [
|
34 |
'base' => esc_url_raw( str_replace( 999999999, '%#%', get_pagenum_link( 999999999, false ) ) ),
|
35 |
'format' => '',
|
wp-job-manager-functions.php
CHANGED
@@ -1053,6 +1053,49 @@ function wpjm_published_submission_edits_require_moderation() {
|
|
1053 |
return apply_filters( 'job_manager_published_submission_edits_require_moderation', $require_moderation );
|
1054 |
}
|
1055 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1056 |
/**
|
1057 |
* Displays category select dropdown.
|
1058 |
*
|
@@ -1094,6 +1137,10 @@ function job_manager_dropdown_categories( $args = '' ) {
|
|
1094 |
$r['pad_counts'] = true;
|
1095 |
}
|
1096 |
|
|
|
|
|
|
|
|
|
1097 |
/** This filter is documented in wp-job-manager.php */
|
1098 |
$r['lang'] = apply_filters( 'wpjm_lang', null );
|
1099 |
|
@@ -1102,18 +1149,26 @@ function job_manager_dropdown_categories( $args = '' ) {
|
|
1102 |
$categories = get_transient( $categories_hash );
|
1103 |
|
1104 |
if ( empty( $categories ) ) {
|
1105 |
-
$
|
1106 |
-
[
|
1107 |
-
|
1108 |
-
|
1109 |
-
|
1110 |
-
|
1111 |
-
|
1112 |
-
|
1113 |
-
|
1114 |
-
|
1115 |
-
|
1116 |
-
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1117 |
set_transient( $categories_hash, $categories, DAY_IN_SECONDS * 7 );
|
1118 |
}
|
1119 |
|
1053 |
return apply_filters( 'job_manager_published_submission_edits_require_moderation', $require_moderation );
|
1054 |
}
|
1055 |
|
1056 |
+
/**
|
1057 |
+
* Get the category slugs from the search query string.
|
1058 |
+
* The query string is made with the category slugs separate by commas.
|
1059 |
+
*
|
1060 |
+
* @since 1.34.2
|
1061 |
+
*
|
1062 |
+
* @return string[] $search_category_slugs Array of category slugs.
|
1063 |
+
*/
|
1064 |
+
function wpjm_get_category_slugs_from_search_query_string() {
|
1065 |
+
$search_category_slugs = [];
|
1066 |
+
|
1067 |
+
if ( isset( $_GET['search_category'] ) && $_GET['search_category'] ) {
|
1068 |
+
$search_category_slugs = explode( ',', sanitize_text_field( wp_unslash( $_GET['search_category'] ) ) );
|
1069 |
+
}
|
1070 |
+
|
1071 |
+
return $search_category_slugs;
|
1072 |
+
}
|
1073 |
+
|
1074 |
+
/**
|
1075 |
+
* Get categories by slug.
|
1076 |
+
*
|
1077 |
+
* @since 1.34.2
|
1078 |
+
*
|
1079 |
+
* @param string[] $search_category_slugs Array of category slugs to search.
|
1080 |
+
* @param array $default_args Default args to search the term categories.
|
1081 |
+
* @param WP_Term[] $exclude_categories Array of categories to exclude.
|
1082 |
+
*
|
1083 |
+
* @return WP_Term[] $categories Array of categories.
|
1084 |
+
*/
|
1085 |
+
function wpjm_get_categories_by_slug( $search_category_slugs, $default_args, $exclude_categories ) {
|
1086 |
+
$exclude_category_ids = wp_list_pluck( $exclude_categories, 'term_id' );
|
1087 |
+
|
1088 |
+
$args = [
|
1089 |
+
'hide_empty' => false,
|
1090 |
+
'slug' => $search_category_slugs,
|
1091 |
+
'exclude' => $exclude_category_ids,
|
1092 |
+
];
|
1093 |
+
|
1094 |
+
$args = wp_parse_args( $args, $default_args );
|
1095 |
+
|
1096 |
+
return get_terms( $args );
|
1097 |
+
}
|
1098 |
+
|
1099 |
/**
|
1100 |
* Displays category select dropdown.
|
1101 |
*
|
1137 |
$r['pad_counts'] = true;
|
1138 |
}
|
1139 |
|
1140 |
+
if ( ! isset( $r['search_category_slugs'] ) ) {
|
1141 |
+
$r['search_category_slugs'] = wpjm_get_category_slugs_from_search_query_string();
|
1142 |
+
}
|
1143 |
+
|
1144 |
/** This filter is documented in wp-job-manager.php */
|
1145 |
$r['lang'] = apply_filters( 'wpjm_lang', null );
|
1146 |
|
1149 |
$categories = get_transient( $categories_hash );
|
1150 |
|
1151 |
if ( empty( $categories ) ) {
|
1152 |
+
$args = [
|
1153 |
+
'taxonomy' => $r['taxonomy'],
|
1154 |
+
'orderby' => $r['orderby'],
|
1155 |
+
'order' => $r['order'],
|
1156 |
+
'hide_empty' => $r['hide_empty'],
|
1157 |
+
'parent' => $r['parent'],
|
1158 |
+
'child_of' => $r['child_of'],
|
1159 |
+
'exclude' => $r['exclude'],
|
1160 |
+
'hierarchical' => $r['hierarchical'],
|
1161 |
+
];
|
1162 |
+
|
1163 |
+
$categories = get_terms( $args );
|
1164 |
+
|
1165 |
+
if ( ! empty( $r['search_category_slugs'] ) ) {
|
1166 |
+
$categories = array_merge(
|
1167 |
+
$categories,
|
1168 |
+
wpjm_get_categories_by_slug( $r['search_category_slugs'], $args, $categories )
|
1169 |
+
);
|
1170 |
+
}
|
1171 |
+
|
1172 |
set_transient( $categories_hash, $categories, DAY_IN_SECONDS * 7 );
|
1173 |
}
|
1174 |
|
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.34.
|
7 |
* Author: Automattic
|
8 |
* Author URI: https://wpjobmanager.com/
|
9 |
* Requires at least: 4.9
|
@@ -21,7 +21,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
21 |
}
|
22 |
|
23 |
// Define constants.
|
24 |
-
define( 'JOB_MANAGER_VERSION', '1.34.
|
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.34.2
|
7 |
* Author: Automattic
|
8 |
* Author URI: https://wpjobmanager.com/
|
9 |
* Requires at least: 4.9
|
21 |
}
|
22 |
|
23 |
// Define constants.
|
24 |
+
define( 'JOB_MANAGER_VERSION', '1.34.2' );
|
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__ ) );
|