From c8fdf39f373f6cbecddfd983bda86218da0badfa Mon Sep 17 00:00:00 2001 From: Viktor Miller Date: Wed, 14 Jan 2026 19:01:25 +0900 Subject: [PATCH] feat(01-03): register ACF field group for job_offer metadata - Add DDHH_JM_ACF_Fields class with register_fields() method - Field group 'Job Details' for post_type job_offer - 6 fields: job_location (text, required), job_type (select, required), job_deadline (date_picker), job_contact_email (email, required), job_logo (image), job_deactivation_reason (textarea, conditional) - German labels: Standort, Art, Bewerbungsfrist, Kontakt-E-Mail, Logo - Logo returns ID for media library integration - Deactivation reason field shows only when status != publish - Hooked to 'acf/init' action --- includes/class-acf-fields.php | 115 ++++++++++++++++++++++++++++ includes/class-ddhh-job-manager.php | 3 + 2 files changed, 118 insertions(+) create mode 100644 includes/class-acf-fields.php diff --git a/includes/class-acf-fields.php b/includes/class-acf-fields.php new file mode 100644 index 0000000..b7204ca --- /dev/null +++ b/includes/class-acf-fields.php @@ -0,0 +1,115 @@ + 'group_job_details', + 'title' => __( 'Job Details', 'ddhh-job-manager' ), + 'fields' => array( + // Job Location + array( + 'key' => 'field_job_location', + 'label' => __( 'Standort', 'ddhh-job-manager' ), + 'name' => 'job_location', + 'type' => 'text', + 'required' => 1, + ), + // Job Type + array( + 'key' => 'field_job_type', + 'label' => __( 'Art', 'ddhh-job-manager' ), + 'name' => 'job_type', + 'type' => 'select', + 'required' => 1, + 'choices' => array( + 'vollzeit' => __( 'Vollzeit', 'ddhh-job-manager' ), + 'teilzeit' => __( 'Teilzeit', 'ddhh-job-manager' ), + 'ehrenamt' => __( 'Ehrenamt', 'ddhh-job-manager' ), + ), + ), + // Job Deadline + array( + 'key' => 'field_job_deadline', + 'label' => __( 'Bewerbungsfrist', 'ddhh-job-manager' ), + 'name' => 'job_deadline', + 'type' => 'date_picker', + 'required' => 0, + 'return_format' => 'Y-m-d', + 'display_format' => 'd.m.Y', + ), + // Job Contact Email + array( + 'key' => 'field_job_contact_email', + 'label' => __( 'Kontakt-E-Mail', 'ddhh-job-manager' ), + 'name' => 'job_contact_email', + 'type' => 'email', + 'required' => 1, + ), + // Job Logo + array( + 'key' => 'field_job_logo', + 'label' => __( 'Logo', 'ddhh-job-manager' ), + 'name' => 'job_logo', + 'type' => 'image', + 'required' => 0, + 'return_format' => 'id', + 'preview_size' => 'thumbnail', + 'library' => 'all', + ), + // Job Deactivation Reason (internal, admin-only) + array( + 'key' => 'field_job_deactivation_reason', + 'label' => __( 'Deaktivierungsgrund (intern)', 'ddhh-job-manager' ), + 'name' => 'job_deactivation_reason', + 'type' => 'textarea', + 'required' => 0, + 'rows' => 3, + 'conditional_logic' => array( + array( + array( + 'field' => 'post_status', + 'operator' => '!=', + 'value' => 'publish', + ), + ), + ), + ), + ), + 'location' => array( + array( + array( + 'param' => 'post_type', + 'operator' => '==', + 'value' => 'job_offer', + ), + ), + ), + 'position' => 'normal', + 'style' => 'default', + ) + ); + } +} diff --git a/includes/class-ddhh-job-manager.php b/includes/class-ddhh-job-manager.php index 9f066cf..224fa2e 100644 --- a/includes/class-ddhh-job-manager.php +++ b/includes/class-ddhh-job-manager.php @@ -49,5 +49,8 @@ class DDHH_JM_Job_Manager { // Initialize post types add_action( 'init', array( 'DDHH_JM_Post_Types', 'register' ) ); + + // Initialize ACF fields + add_action( 'acf/init', array( 'DDHH_JM_ACF_Fields', 'register_fields' ) ); } }