update contact & FAQ loop compossent

This commit is contained in:
sebvtl728
2025-01-08 19:09:53 +01:00
parent 015104ef56
commit 7d2863e2d0
3 changed files with 213 additions and 222 deletions
@@ -6,9 +6,7 @@ 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']);
}
}
@@ -16,141 +14,132 @@ 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,
]
);
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
// Gestion des menus ACF et sous-menus
function register_acf_dashboard_menus() {
// Menu principal : Page d'accueil
add_menu_page(
'Gestion des Champs ACF', // Titre de la page principale
'Page d\'accueil', // 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
'Page d\'accueil', // Titre de la page principale
'Page d\'accueil', // Texte du menu
'manage_options', // Capacité requise
'acf-homepage', // Slug du menu principal
'acf_manager_main_page', // Fonction de rappel pour la page principale
'dashicons-admin-home', // Icône du menu
2 // Position dans le menu
);
// Sous-menu pour le Groupe 1
// Sous-menus pour Page d'accueil
add_submenu_page(
'acf-manager', // Slug du menu parent
'Groupe 1 ACF', // Titre de la page
'Section Hero', // 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
'acf-homepage', // Slug du menu parent
'Gérer Section Hero', // Titre de la page
'Section Hero', // Texte du sous-menu
'manage_options', // Capacité requise
'acf-homepage-hero', // Slug du sous-menu
'acf_manager_section_hero' // Fonction de rappel
);
// Sous-menu pour le Groupe 2
add_submenu_page(
'acf-manager',
'Groupe 3 ACF',
'Section Construction',
'manage_options',
'acf-manager-group-3',
'acf_manager_group_3'
);
// Sous-menu pour le Groupe 2
add_submenu_page(
'acf-manager',
'Groupe 2 ACF',
'acf-homepage',
'Gérer Section Expertise',
'Section Expertise',
'manage_options',
'acf-manager-group-2',
'acf_manager_group_2'
'acf-homepage-expertise',
'acf_manager_section_expertise'
);
}
add_action('admin_menu', 'register_multiple_acf_dashboard_menus');
// Page principale (facultatif)
add_submenu_page(
'acf-homepage',
'Gérer Section Construction',
'Section Construction',
'manage_options',
'acf-homepage-construction',
'acf_manager_section_construction'
);
// Menu principal : Page Contact
add_menu_page(
'Page Contact', // Titre de la page principale
'Page Contact', // Texte du menu
'manage_options', // Capacité requise
'acf-contact', // Slug du menu principal
'acf_manager_contact_main', // Fonction de rappel pour la page principale
'dashicons-email', // Icône du menu
3 // Position dans le menu
);
// Sous-menus pour Page Contact
add_submenu_page(
'acf-contact',
'Gérer Section Formulaire',
'Section FAQ',
'manage_options',
'acf-contact-form',
'acf_manager_contact_form'
);
// add_submenu_page(
// 'acf-contact',
// 'Gérer Section Coordonnées',
// 'Section Coordonnées',
// 'manage_options',
// 'acf-contact-coordinates',
// 'acf_manager_contact_coordinates'
// );
}
add_action('admin_menu', 'register_acf_dashboard_menus');
// Fonction de rappel pour les pages principales
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>';
echo '<div class="wrap"><h1>Bienvenue dans le Gestionnaire de la Page d\'accueil</h1><p>Choisissez une section pour gérer ses champs.</p></div>';
}
// Groupe 1 - Champs ACF
function acf_manager_group_1() {
function acf_manager_contact_main() {
echo '<div class="wrap"><h1>Bienvenue dans le Gestionnaire de la Page Contact</h1><p>Choisissez une section pour gérer ses champs.</p></div>';
}
// Fonctions de rappel pour les sous-menus
function acf_manager_section_hero() {
render_acf_form('group_6774f26930ebd', '13'); // Remplacez par vos IDs ACF et Post ID
}
function acf_manager_section_expertise() {
render_acf_form('group_6779c41fcdc6d', '13');
}
function acf_manager_section_construction() {
render_acf_form('group_677d3294c3dfa', '13');
}
function acf_manager_contact_form() {
render_acf_form('group_677e8bf907253', '116'); // Remplacez par vos IDs ACF et Post ID
}
// function acf_manager_contact_coordinates() {
// render_acf_form('group_contact_coordinates', '116'); // Remplacez par vos IDs ACF et Post ID
// }
// Fonction générique pour afficher les formulaires ACF
function render_acf_form($field_group, $post_id) {
?>
<div class="wrap">
<h1>Groupe 1 - Champs ACF</h1>
<h1>Gestion des Champs</h1>
<?php
if (function_exists('acf_form')) {
acf_form_head();
acf_form_head();
acf_form(array(
'post_id' => '13', // Remplacez par un ID de page si nécessaire
'field_groups' => array('group_6774f26930ebd'),
'post_id' => $post_id, // ID de la page ou de l'article
'field_groups' => array($field_group), // ID du groupe ACF
'form' => true,
'return' => add_query_arg('updated', 'true', wp_get_referer()),
'submit_value' => __('Enregistrer les modifications', 'acf'),
@@ -163,47 +152,13 @@ function acf_manager_group_1() {
<?php
}
// Groupe 3 - Champs ACF
function acf_manager_group_3() {
?>
<div class="wrap">
<h1>Groupe 3 - 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_677d3294c3dfa'),
'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
}
register_rest_field(
'page',
'acf',
[
'get_callback' => function ($object) {
return get_fields($object['id']);
},
'schema' => null,
]
);