• Namespace
  • Class
  • Tree
  • Deprecated
  • Todo
  • Hooks

Namespaces

  • None
  • SIW
    • Admin
    • API
    • Async
    • Batch
    • Compatibility
    • Data
    • Elements
    • Email
    • External
    • Forms
    • Modules
    • Newsletter
    • Page_Builder
    • Plato
    • Widgets
    • WooCommerce
      • Admin
      • Checkout
      • Email
      • Export
      • Frontend
      • Import

Classes

  • SIW\Admin\Admin
  • SIW\Admin\Admin_Bar
  • SIW\Admin\Notices
  • SIW\Admin\Options_Page
  • SIW\Admin\Properties_Page
  • SIW\Admin\Shortcodes
  • SIW\Admin\User_Columns
  • SIW\Animation
  • SIW\API\Endpoint
  • SIW\API\Newsletter_Subscribe
  • SIW\API\Postcode_Lookup
  • SIW\Assets
  • SIW\Async\Process_Stockphoto_Upload
  • SIW\Async\Request
  • SIW\Attachment
  • SIW\Autoloader
  • SIW\Batch\Count_Workcamps
  • SIW\Batch\Delete_Applications
  • SIW\Batch\Delete_Old_Posts
  • SIW\Batch\Delete_Orphaned_Variations
  • SIW\Batch\Delete_Workcamps
  • SIW\Batch\Job
  • SIW\Batch\Send_Workcamp_Approval_Emails
  • SIW\Batch\Update_Dutch_Workcamps
  • SIW\Batch\Update_Free_Places
  • SIW\Batch\Update_SEO_Noindex
  • SIW\Batch\Update_Taxonomies
  • SIW\Batch\Update_Workcamp_Tariffs
  • SIW\Batch\Update_Workcamp_Visibility
  • SIW\Batch\Update_Workcamps
  • SIW\Bootstrap
  • SIW\Compatibility\Caldera_Forms
  • SIW\Compatibility\Mailpoet
  • SIW\Compatibility\Meta_Box
  • SIW\Compatibility\Password_Protected
  • SIW\Compatibility\Pinnacle_Premium
  • SIW\Compatibility\Plugins
  • SIW\Compatibility\Safe_Redirect_Manager
  • SIW\Compatibility\SiteOrigin_Page_Builder
  • SIW\Compatibility\The_SEO_Framework
  • SIW\Compatibility\UpdraftPlus
  • SIW\Compatibility\WooCommerce
  • SIW\Compatibility\WordPress
  • SIW\Compatibility\WP_Rocket
  • SIW\Compatibility\WP_Sentry_Integration
  • SIW\Compatibility\WPML
  • SIW\CSS
  • SIW\Data\Continent
  • SIW\Data\Country
  • SIW\Data\Currency
  • SIW\Data\Language
  • SIW\Data\Social_Network
  • SIW\Data\Work_Type
  • SIW\Elements
  • SIW\Elements\Accordion
  • SIW\Elements\Carousel
  • SIW\Elements\Chart
  • SIW\Elements\Google_Maps
  • SIW\Elements\Interactive_Map
  • SIW\Elements\Interactive_Map_Destinations
  • SIW\Elements\Interactive_Map_ESC
  • SIW\Elements\Interactive_Map_Netherlands
  • SIW\Elements\Modal
  • SIW\Elements\Pie_Chart
  • SIW\Elements\Tablist
  • SIW\Elements\Taxonomy_Filter
  • SIW\Elements\World_Map
  • SIW\Email\Configuration
  • SIW\Email\Template
  • SIW\External\Exchange_Rates
  • SIW\External\Mailjet
  • SIW\External\Postcode_Lookup
  • SIW\External\Spam_Check
  • SIW\Formatting
  • SIW\Forms
  • SIW\Forms\Form
  • SIW\Forms\Processor_Spam_Check
  • SIW\Head
  • SIW\htaccess
  • SIW\HTML
  • SIW\i18n
  • SIW\Icons
  • SIW\Login
  • SIW\Media_Taxonomies
  • SIW\Modules\Cache_Rebuild
  • SIW\Modules\Cookie_Notice
  • SIW\Modules\Google_Analytics
  • SIW\Modules\Menu_Cart
  • SIW\Modules\Social_Share
  • SIW\Modules\Topbar
  • SIW\Newsletter\Confirmation_Email
  • SIW\Newsletter\Confirmation_Page
  • SIW\Newsletter\Hash
  • SIW\Options
  • SIW\Page_Builder\Animation
  • SIW\Page_Builder\Visibility
  • SIW\Plato\Download_File
  • SIW\Plato\Export
  • SIW\Plato\Export_Application
  • SIW\Plato\Import
  • SIW\Plato\Import_Dutch_Workcamps
  • SIW\Plato\Import_FPL
  • SIW\Plato\Import_Workcamps
  • SIW\Plato\Plato_Interface
  • SIW\Properties
  • SIW\Scheduler
  • SIW\Shortcodes
  • SIW\Update
  • SIW\Upload_Subdir
  • SIW\Util
  • SIW\Widgets
  • SIW\Widgets\Accordion
  • SIW\Widgets\Calendar
  • SIW\Widgets\Carousel
  • SIW\Widgets\Contact
  • SIW\Widgets\CTA
  • SIW\Widgets\Dutch_Projects
  • SIW\Widgets\Features
  • SIW\Widgets\Google_Maps
  • SIW\Widgets\Infobox
  • SIW\Widgets\Map
  • SIW\Widgets\Newsletter
  • SIW\Widgets\Organisation
  • SIW\Widgets\Pie_Chart
  • SIW\Widgets\Quick_Search_Form
  • SIW\Widgets\Quick_Search_Results
  • SIW\Widgets\Quote
  • SIW\Widgets\Tabs
  • SIW\Widgets\Widget
  • SIW\WooCommerce\Admin\Coupon
  • SIW\WooCommerce\Admin\Order
  • SIW\WooCommerce\Admin\Order_Columns
  • SIW\WooCommerce\Admin\Product
  • SIW\WooCommerce\Admin\Product_Columns
  • SIW\WooCommerce\Admin\Stockphoto_Page
  • SIW\WooCommerce\Checkout\Discount
  • SIW\WooCommerce\Checkout\Fields
  • SIW\WooCommerce\Checkout\Form
  • SIW\WooCommerce\Checkout\Newsletter
  • SIW\WooCommerce\Checkout\Terms
  • SIW\WooCommerce\Checkout\Validation
  • SIW\WooCommerce\Email\Customer_On_Hold_Order
  • SIW\WooCommerce\Email\Customer_Processing_Order
  • SIW\WooCommerce\Email\Emails
  • SIW\WooCommerce\Email\New_Order
  • SIW\WooCommerce\Export\Order
  • SIW\WooCommerce\Frontend\Archive
  • SIW\WooCommerce\Frontend\Archive_Header
  • SIW\WooCommerce\Frontend\Product
  • SIW\WooCommerce\Frontend\Product_Tabs
  • SIW\WooCommerce\Import\Product
  • SIW\WooCommerce\Import\Product_Image
  • SIW\WooCommerce\Import\Product_Variations
  • SIW_Content_Type
  • SIW_Content_Type_TM_Country
  • SIW_Post_Type
  • SIW_Post_Type_Agenda
  • SIW_Post_Type_Vacatures
  • SIW_Taxonomy

Functions

  • siw_generate_event_json_ld
  • siw_generate_interactive_map
  • siw_generate_job_json_ld
  • siw_get_board_titles
  • siw_get_continent
  • siw_get_continents
  • siw_get_countries
  • siw_get_country
  • siw_get_currencies
  • siw_get_currency
  • siw_get_data
  • siw_get_data_file_ids
  • siw_get_days
  • siw_get_dutch_provinces
  • siw_get_email_settings
  • siw_get_event_data
  • siw_get_featured_job
  • siw_get_genders
  • siw_get_interactive_maps
  • siw_get_job_data
  • siw_get_language
  • siw_get_language_skill_levels
  • siw_get_languages
  • siw_get_nationalities
  • siw_get_option
  • siw_get_project_types
  • siw_get_social_networks
  • siw_get_testimonial_quote
  • siw_get_testimonial_quote_categories
  • siw_get_upcoming_events
  • siw_get_work_type
  • siw_get_work_types
  • siw_meta
  • siw_newsletter_get_lists
  • siw_newsletter_get_subscriber_count
  • siw_newsletter_send_confirmation_email
  • siw_newsletter_subscribe
  • siw_set_option
  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
/*
 * (c)2018 SIW Internationale Vrijwilligersprojecten
 */

use SIW\HTML;
use SIW\Formatting;
use SIW\Properties;

/**
 * Haal gegevens van vacature op
 *
 * @param int $post_id
 * @return array
 */
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 ),// Wordt nog niet gebruikt
        '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;
}

/**
 * Geeft eerste uitgelichte vacature terug
 * @return array
 */
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;
}


/**
 * Genereer structured data voor evenement
 *
 * @param array $job
 * @return string
 */
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'], //TODO: afhankelijk maken van instelling betaald.
        '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, //TODO:
                "unitText" => "MONTH" //TODO:
            ],
        ],
    ];

    return Formatting::generate_json_ld( $data );
}
SIW API documentation generated by ApiGen