1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
<?php
use SIW\HTML;
use SIW\Formatting;
use SIW\Properties;
function siw_get_job_data( $post_id ) {
$deadline_ts = get_post_meta( $post_id, 'siw_vacature_deadline', true );
$contactpersoon_functie = get_post_meta( $post_id, 'siw_vacature_contactpersoon_functie', true );
$solliciteren_functie = get_post_meta( $post_id, 'siw_vacature_solliciteren_functie', true );
$job_data = [
'permalink' => get_permalink( $post_id ),
'title' => get_the_title( $post_id ),
'deadline_datum' => date( 'Y-m-d', $deadline_ts ),
'deadline' => Formatting::format_date( date( 'Y-m-d', $deadline_ts ), false ),
'inleiding' => get_post_meta( $post_id, 'siw_vacature_inleiding', true ),
'highlight_quote' => get_post_meta( $post_id, 'siw_vacature_highlight_quote', true ),
'betaald' => get_post_meta( $post_id, 'siw_vacature_betaald', true ),
'uur_per_week' => get_post_meta( $post_id, 'siw_vacature_uur_per_week', true ),
'wie_ben_jij' => get_post_meta( $post_id, 'siw_vacature_wie_ben_jij', true ),
'wie_ben_jij_lijst' => get_post_meta( $post_id, 'siw_vacature_wie_ben_jij_lijst', true ) ?? [],
'wat_ga_je_doen' => get_post_meta( $post_id, 'siw_vacature_wat_ga_je_doen', true ),
'wat_ga_je_doen_lijst' => get_post_meta( $post_id, 'siw_vacature_wat_ga_je_doen_lijst', true ) ?? [],
'wat_bieden_wij_jou' => get_post_meta( $post_id, 'siw_vacature_wat_bieden_wij_jou', true ),
'wat_bieden_wij_jou_lijst' => get_post_meta( $post_id, 'siw_vacature_wat_bieden_wij_jou_lijst', true ) ?? [],
'contactpersoon_naam' => get_post_meta( $post_id, 'siw_vacature_contactpersoon_naam', true ),
'contactpersoon_email' => antispambot( get_post_meta( $post_id, 'siw_vacature_contactpersoon_email', true ) ),
'contactpersoon_telefoon' => get_post_meta( $post_id, 'siw_vacature_contactpersoon_telefoon', true ),
'solliciteren_naam' => get_post_meta( $post_id, 'siw_vacature_solliciteren_naam', true ),
'solliciteren_email' => antispambot( get_post_meta( $post_id, 'siw_vacature_solliciteren_email', true ) ),
'toelichting_solliciteren' => get_post_meta( $post_id, 'siw_vacature_toelichting_solliciteren', true ),
'meervoud' => get_post_meta( $post_id, 'siw_vacature_meervoud', true ),
'date_last_updated' => get_the_modified_date( 'Y-m-d', $post_id ),
];
if ( $contactpersoon_functie ) {
$job_data['contactpersoon_naam'] = $job_data['contactpersoon_naam'] . ' (' . $contactpersoon_functie . ')';
}
if ( $solliciteren_functie ) {
$job_data['solliciteren_naam'] = $job_data['solliciteren_naam'] . ' (' . $solliciteren_functie . ')';
}
$job_data['json_ld'] = siw_generate_job_json_ld( $job_data );
return $job_data;
}
function siw_get_featured_job() {
$meta_query = [
'relation' => 'AND',
[
'key' => 'siw_vacature_deadline',
'value' => time(),
'compare' => '>=',
],
[
'key' => 'siw_vacature_uitgelicht',
'value' => 'on',
'compare' => '=',
],
];
$query_args = [
'post_type' => 'vacatures',
'posts_per_page' => 1,
'post_status' => 'publish',
'ignore_sticky_posts' => true,
'meta_key' => 'siw_vacature_deadline',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query' => $meta_query,
'fields' => 'ids'
];
$featured_job_id = get_posts( $query_args );
if ( empty ( $featured_job_id ) ) {
return false;
}
$featured_job = siw_get_job_data( $featured_job_id[0] );
return $featured_job;
}
function siw_generate_job_json_ld( $job ) {
$description = wpautop( $job['inleiding'] ) .
'<h5><strong>' . __( 'Wat ga je doen?', 'siw' ) . '</strong></h5>' . wpautop( $job['wat_ga_je_doen'] . HTML::generate_list( $job['wat_ga_je_doen_lijst'] ) ) .
'<h5><strong>' . __( 'Wie ben jij?', 'siw' ) . '</strong></h5>' . wpautop( $job['wie_ben_jij'] . HTML::generate_list( $job['wie_ben_jij_lijst'] ) ) .
'<h5><strong>' . __( 'Wat bieden wij jou?', 'siw' ) . '</strong></h5>' . wpautop( $job['wat_bieden_wij_jou'] . HTML::generate_list( $job['wat_bieden_wij_jou_lijst'] ) ) .
'<h5><strong>' . __( 'Wie zijn wij?', 'siw' ) . '</strong></h5>' . wpautop( siw_get_option('job_postings_organization_profile') );
$logo = wp_get_attachment_url( get_theme_mod( 'custom_logo' ) );
$data = [
'@context' => 'http://schema.org',
'@type' => 'JobPosting',
'description' => wp_kses_post( $description ),
'title' => esc_attr( $job['title'] ),
'datePosted' => esc_attr( $job['date_last_updated'] ),
'validThrough' => esc_attr( $job['deadline_datum'] ),
'employmentType' => ['VOLUNTEER', 'PARTTIME'],
'hiringOrganization'=> [
'@type' => 'Organization',
'name' => Properties::NAME,
'sameAs'=> SIW_SITE_URL,
'logo' => esc_url( $logo ),
],
'jobLocation' => [
'@type' => 'Place',
'address' => [
'@type' => 'PostalAddress',
'streetAddress' => Properties::ADDRESS,
'addressLocality' => Properties::CITY,
'postalCode' => Properties::POSTCODE,
'addressRegion' => Properties::CITY,
'addressCountry' => 'NL',
],
],
"baseSalary" => [
"@type" => "MonetaryAmount",
"currency" => "EUR",
"value" => [
"@type" => "QuantitativeValue",
"value" => 0.00,
"unitText" => "MONTH"
],
],
];
return Formatting::generate_json_ld( $data );
}