Files
Octopus-React-Wp/server/wp-content/themes/hello-elementor-child/functions.php
T
2025-01-06 00:04:43 +01:00

177 lines
5.5 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
// Exit if accessed directly
if (!defined('ABSPATH')) exit;
// Charger les styles du parent et de l'enfant
if (!function_exists('child_theme_styles')) {
function child_theme_styles() {
// Style du parent
wp_enqueue_style('parent-style', get_template_directory_uri() . '/style.css');
// Style de l'enfant
wp_enqueue_style('child-style', get_stylesheet_directory_uri() . '/style.css', ['parent-style']);
}
}
add_action('wp_enqueue_scripts', 'child_theme_styles');
// Ajouter les champs ACF à l'API REST pour les pages
add_action('rest_api_init', function () {
register_rest_field(
'page',
'acf',
[
'get_callback' => function ($object) {
return get_fields($object['id']);
},
'schema' => null,
]
);
});
// API RANK SEO
add_filter('rest_prepare_page', function ($response, $post) {
$seo_data = [
'rank_math_title' => get_post_meta($post->ID, 'rank_math_title', true),
'rank_math_description' => get_post_meta($post->ID, 'rank_math_description', true),
];
$response->data = array_merge($response->data, $seo_data);
return $response;
}, 10, 2);
add_action('rest_api_init', function () {
register_rest_route('custom/v1', '/contact', array(
'methods' => 'POST',
'callback' => 'handle_contact_form',
'permission_callback' => '__return_true', // Permet l'accès public
));
});
// Formulaire
function register_contact_endpoint() {
register_rest_route('custom/v1', '/contact', [
'methods' => 'POST',
'callback' => 'handle_contact_form',
'permission_callback' => '__return_true',
]);
}
add_action('rest_api_init', 'register_contact_endpoint');
function handle_contact_form($request) {
$params = $request->get_json_params();
$name = sanitize_text_field($params['name'] ?? '');
$email = sanitize_email($params['email'] ?? '');
$subject = sanitize_text_field($params['subject'] ?? '');
$message = sanitize_textarea_field($params['message'] ?? '');
if (empty($name) || empty($email) || empty($subject) || empty($message)) {
return new WP_Error(
'incomplete_fields',
'Tous les champs doivent être remplis.',
['status' => 400]
);
}
// Logique pour envoyer l'e-mail ou enregistrer les données
$to = get_option('admin_email'); // Adresse e-mail de l'administrateur WordPress
$headers = ['Content-Type: text/html; charset=UTF-8', 'From: ' . $name . ' <' . $email . '>'];
$mail_sent = wp_mail($to, $subject, nl2br($message), $headers);
if (!$mail_sent) {
return new WP_Error('email_not_sent', 'Le message na pas pu être envoyé.', ['status' => 500]);
}
return [
'success' => true,
'message' => 'Message envoyé avec succès.',
];
}
// Gestion des menus ACF
function register_multiple_acf_dashboard_menus() {
// Menu principal
add_menu_page(
'Gestion des Champs ACF', // Titre de la page principale
'ACF Manager', // Texte du menu
'manage_options', // Capacité requise
'acf-manager', // Slug du menu principal
'acf_manager_main_page', // Fonction de rappel pour la page principale
'dashicons-admin-generic', // Icône du menu
2 // Position dans le menu
);
// Sous-menu pour le Groupe 1
add_submenu_page(
'acf-manager', // Slug du menu parent
'Groupe 1 ACF', // Titre de la page
'Page d\'accueil', // Texte du sous-menu
'manage_options', // Capacité requise
'acf-manager-group-1', // Slug du sous-menu
'acf_manager_group_1' // Fonction de rappel pour afficher le contenu
);
// Sous-menu pour le Groupe 2
add_submenu_page(
'acf-manager',
'Groupe 2 ACF',
'section expertise',
'manage_options',
'acf-manager-group-2',
'acf_manager_group_2'
);
}
add_action('admin_menu', 'register_multiple_acf_dashboard_menus');
// Page principale (facultatif)
function acf_manager_main_page() {
echo '<div class="wrap"><h1>Bienvenue dans le Gestionnaire ACF</h1><p>Choisissez un groupe dans le menu pour gérer ses champs.</p></div>';
}
// Groupe 1 - Champs ACF
function acf_manager_group_1() {
?>
<div class="wrap">
<h1>Groupe 1 - Champs ACF</h1>
<?php
if (function_exists('acf_form')) {
acf_form_head();
acf_form(array(
'post_id' => '13', // Remplacez par un ID de page si nécessaire
'field_groups' => array('group_6774f26930ebd'),
'form' => true,
'return' => add_query_arg('updated', 'true', wp_get_referer()),
'submit_value' => __('Enregistrer les modifications', 'acf'),
));
} else {
echo '<p>Le plugin ACF n\'est pas activé ou disponible.</p>';
}
?>
</div>
<?php
}
// Groupe 2 - Champs ACF
function acf_manager_group_2() {
?>
<div class="wrap">
<h1>Groupe 2 - Champs ACF</h1>
<?php
if (function_exists('acf_form')) {
acf_form_head();
acf_form(array(
'post_id' => '13', // Remplacez par un ID de page si nécessaire
'field_groups' => array('group_6779c41fcdc6d'),
'form' => true,
'return' => add_query_arg('updated', 'true', wp_get_referer()),
'submit_value' => __('Enregistrer les modifications', 'acf'),
));
} else {
echo '<p>Le plugin ACF n\'est pas activé ou disponible.</p>';
}
?>
</div>
<?php
}