/home/bdqbpbxa/demo-subdomains/lafinteca.goodface.com.ua/wp-content/themes/lafinteca/functions.php
<?php
// Require settings and helpers
$theme_uri_arr = explode('/', get_template_directory_uri());
$theme_folder_name = end($theme_uri_arr);
$theme_root_path = get_theme_root() . '/' . $theme_folder_name;
require $theme_root_path . '/functions/settings/acf-settings.php';
require $theme_root_path . '/functions/settings/cf7-settings.php';
require $theme_root_path . '/functions/settings/wp-output-html-settings.php';
require $theme_root_path . '/functions/settings/wysiwyg-editor-settings.php';
if (function_exists('pll_current_language')) {
require $theme_root_path . '/functions/settings/polylang-og-settings.php';
}
require $theme_root_path . '/functions/helpers/helper-functions.php';
require $theme_root_path . '/functions/helpers/helper-shortcodes.php';
// Add custom styles to admin panel
function add_custom_admin_styles()
{
wp_enqueue_style('admin-panel-custom-styles', get_template_directory_uri() . '/assets-admin/css/admin-panel.css');
}
add_action('admin_enqueue_scripts', 'add_custom_admin_styles');
// Create option pages
if (function_exists('acf_add_options_page')) {
acf_add_options_page(array(
'page_title' => 'Global settings',
'menu_title' => 'Global settings',
'menu_slug' => 'theme-general-settings',
'capability' => 'edit_posts',
'redirect' => false
));
acf_add_options_sub_page(array(
'page_title' => 'English',
'menu_title' => 'English',
'menu_slug' => 'global-settings-en',
'parent_slug' => 'theme-general-settings'
));
acf_add_options_sub_page(array(
'page_title' => 'Portuguese',
'menu_title' => 'Portuguese',
'menu_slug' => 'global-settings-pt',
'parent_slug' => 'theme-general-settings'
));
acf_add_options_sub_page(array(
'page_title' => 'Spanish',
'menu_title' => 'Spanish',
'menu_slug' => 'global-settings-es',
'parent_slug' => 'theme-general-settings'
));
}
// Include styles and scripts
function include_styles_and_scripts()
{
wp_enqueue_style('swiper-bundle', get_template_directory_uri() . '/assets/css/lib/swiper-bundle.min.css', array(), '1.1.2');
wp_enqueue_style('scroll-animations', get_template_directory_uri() . '/assets/css/lib/scroll-animations.css', array(), '1.1.2');
wp_enqueue_style('ui-kit', get_template_directory_uri() . '/assets/css/ui-kit.css', array(), '1.1.2');
wp_enqueue_style('ui-blocks', get_template_directory_uri() . '/assets/css/ui-blocks.css', array(), '1.1.2');
wp_enqueue_style('hovers', get_template_directory_uri() . '/assets/css/hovers.css', array(), '1.1.2');
wp_enqueue_style('form-elements', get_template_directory_uri() . '/assets/css/ui-kit/form-elements.css', array(), '1.1.2');
wp_enqueue_style('editor', get_template_directory_uri() . '/assets/css/ui-kit/editor.css', array(), '1.1.2');
wp_enqueue_style('styles', get_template_directory_uri() . '/assets/css/styles.css', array(), '1.1.2');
wp_enqueue_style('adaptive', get_template_directory_uri() . '/assets/css/adaptive.css', array(), '1.1.2');
wp_deregister_script('jquery');
wp_enqueue_script('jquery', get_template_directory_uri() . '/assets/js/lib/jquery-3.7.1.min.js', array(), '1.1.2', true);
wp_enqueue_script('swiper-bundle.min.js', get_template_directory_uri() . '/assets/js/lib/swiper-bundle.min.js', array(), '1.1.2', true);
wp_enqueue_script('gsap.min.js', get_template_directory_uri() . '/assets/js/lib/gsap.min.js', array(), '1.1.2', true);
wp_enqueue_script('ScrollTrigger.min.js', get_template_directory_uri() . '/assets/js/lib/ScrollTrigger.min.js', array(), '1.1.2', true);
wp_enqueue_script('animations.js', get_template_directory_uri() . '/assets/js/animations.js', array(), '1.1.2', true);
wp_enqueue_script('custom-solutions.js', get_template_directory_uri() . '/assets/js/custom-solutions.js', array(), '1.1.2', true);
wp_enqueue_script('scripts.js', get_template_directory_uri() . '/assets/js/scripts.js', array(), '1.1.2', true);
// wp_enqueue_script('backend-scripts', get_template_directory_uri() . '/assets-backend/backend-scripts.js', array(), '1.1.2', true);
}
add_action('wp_enqueue_scripts', 'include_styles_and_scripts');
function enqueue_ajax_scripts() {
wp_enqueue_script(
'backend-scripts',
get_template_directory_uri() . '/assets-backend/backend-scripts.js',
['jquery'],
'1.0.0',
true
);
wp_localize_script('backend-scripts', 'ajax_object', [
'ajax_url' => admin_url('admin-ajax.php'),
]);
}
add_action('wp_enqueue_scripts', 'enqueue_ajax_scripts');
// ajax filter
add_action('wp_ajax_blog_filter', 'blog_filter_function');
add_action('wp_ajax_nopriv_blog_filter', 'blog_filter_function');
function blog_filter_function()
{
get_template_part('templates/post-ajax-loader');
wp_die();
}
// disable yoast schema
function ajax_connect()
{
wp_add_inline_script('scripts.js', 'const ajaxurl = "' . admin_url('admin-ajax.php') . '";');
}
add_action('wp_enqueue_scripts', 'ajax_connect');
function load_more_posts()
{
$paged = isset($_POST['paged']) ? intval($_POST['paged']) : 1;
$offset = isset($_POST['offset']) ? intval($_POST['offset']) : 0;
$args = array(
'post_type' => 'event',
'posts_per_page' => 4,
'paged' => $paged,
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'end_date',
'value' => date('Y-m-d H:i:s'),
'compare' => '<',
'type' => 'DATETIME',
),
),
'meta_key' => 'end_date',
'orderby' => 'meta_value',
'order' => 'DESC',
'offset' => $offset,
);
$query = new WP_Query($args);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
$start_date = get_field('start_date');
$end_date = get_field('end_date');
$place = get_field('place');
$mainImg = get_field('image');
?>
<div class="events-delayed-item">
<div class="events-delayed-item-image">
<img src="<?php echo $mainImg; ?>" alt="<?php the_title(); ?>">
</div>
<div class="events-delayed-item-body">
<h3 class="title title-4 mob-title-4 --supply"><?php the_title(); ?></h3>
<div class="events-delayed-item-info">
<p class="date">
<?php
$start_date_timestamp = strtotime($start_date);
$end_date_timestamp = strtotime($end_date);
$locale = pll_current_language('locale');
setlocale(LC_TIME, $locale);
$start_day = date('j', $start_date_timestamp);
$start_month = date('M', $start_date_timestamp);
$end_day = date('j', $end_date_timestamp);
$end_month = date('M', $end_date_timestamp);
if ($start_month == $end_month) {
echo $start_day . '-' . $end_day . ' ' . $start_month . ', ' . date('Y', $end_date_timestamp);
} else {
echo $start_day . ' ' . $start_month . ' - ' . $end_day . ' ' . $end_month . ', ' . date('Y', $end_date_timestamp);
}
?>
</p>
<p class="time"><?php echo $place; ?></p>
</div>
</div>
</div>
<?php
}
wp_reset_postdata();
} else {
echo 'No more posts found';
}
wp_die();
}
add_action('wp_ajax_load_more_posts', 'load_more_posts');
add_action('wp_ajax_nopriv_load_more_posts', 'load_more_posts');
// $api_token = 'ddbe0a788fac7a405fb2';
// $company_id = '205147';
function handle_form_submission() {
$log_file = WP_CONTENT_DIR . '/custom-debug.log';
function custom_log($message, $log_file) {
file_put_contents($log_file, date('Y-m-d H:i:s') . " - " . $message . "\n", FILE_APPEND);
}
if (isset($_POST['first-name'])) {
$first_name = sanitize_text_field($_POST['first-name']);
$last_name = sanitize_text_field($_POST['last-name']);
$email = sanitize_email($_POST['email']);
$phone = sanitize_text_field($_POST['tel']);
$message = sanitize_textarea_field($_POST['message']);
$cv = $_FILES['cv-file'];
$job_position_id = sanitize_text_field($_POST['job_position_id']);
custom_log("Form Data: " . print_r($_POST, true), $log_file);
custom_log("File Data: " . print_r($cv, true), $log_file);
$file_path = $cv['tmp_name'];
$file_type = $cv['type'];
$file_name = $cv['name'];
$api_token = 'ddbe0a788fac7a405fb2';
$company_id = '205147';
// Завантаження файлу CV на Personio
$post_data = [
'file' => curl_file_create($file_path, $file_type, $file_name)
];
$headers = [
"Accept: application/json",
"Content-Type: multipart/form-data",
"X-Company-Id: $company_id",
"Authorization: Bearer $api_token"
];
$ch = curl_init('https://api.personio.de/v1/recruiting/applications/documents');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$upload_response = curl_exec($ch);
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curl_error = curl_error($ch);
curl_close($ch);
custom_log("cURL Response: " . print_r($upload_response, true), $log_file);
custom_log("HTTP Status: " . $http_status, $log_file);
custom_log("cURL Error: " . $curl_error, $log_file);
$upload_body = json_decode($upload_response, true);
custom_log('Upload Body: ' . print_r($upload_body, true), $log_file);
if (isset($upload_body['errors'])) {
custom_log('Error uploading CV: ' . print_r($upload_body['errors'], true), $log_file);
wp_send_json_error('Error uploading CV: ' . (isset($upload_body['errors']) ? json_encode($upload_body['errors']) : 'Unknown error'));
}
if (!isset($upload_body['uuid'])) {
custom_log('Error uploading CV: Document ID not returned.', $log_file);
wp_send_json_error('Error uploading CV: Document ID not returned.');
}
$document_id = $upload_body['uuid'];
// Створення заявки в Personio
$application_data = [
'job_position_id' => $job_position_id,
'first_name' => $first_name,
'last_name' => $last_name,
'email' => $email,
'message' => $message,
'files' => [
[
'uuid' => $document_id,
'original_filename' => $file_name,
'category' => 'cv'
]
],
'attributes' => [
[
'id' => 'phone', // Приклад користувацького атрибута
'value' => $phone
]
]
];
custom_log('Application Data: ' . print_r($application_data, true), $log_file);
$application_url = 'https://api.personio.de/v1/recruiting/applications';
$application_response = wp_remote_post($application_url, [
'headers' => [
'Authorization' => 'Bearer ' . $api_token,
'Content-Type' => 'application/json',
'X-Company-Id' => $company_id,
'Accept' => 'application/json'
],
'body' => json_encode($application_data)
]);
if (is_wp_error($application_response)) {
custom_log('Error creating application: ' . $application_response->get_error_message(), $log_file);
wp_send_json_error('Error creating application: ' . $application_response->get_error_message());
}
$application_body = json_decode(wp_remote_retrieve_body($application_response), true);
custom_log('Application Response: ' . $application_body, $log_file);
if (isset($application_body['errors'])) {
custom_log('Error creating application: ' . print_r($application_body['errors'], true), $log_file);
wp_send_json_error('Error creating application: ' . json_encode($application_body['errors']));
}
wp_send_json_error($application_body);
if (!isset($application_body['data']['id'])) {
custom_log('Error creating application: Application ID not returned.', $log_file);
wp_send_json_error('Error creating application: Application ID not returned.');
}
wp_send_json_success('Application created successfully with ID: ' . $application_body['data']['id']);
} else {
wp_send_json_error('Required fields missing.');
}
}
add_action('wp_ajax_nopriv_handle_form_submission', 'handle_form_submission');
add_action('wp_ajax_handle_form_submission', 'handle_form_submission');