177 lines
5.5 KiB
PHP
177 lines
5.5 KiB
PHP
<?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 n’a 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
|
||
}
|