diff --git a/css/style.css b/css/style.css index a28209b..2ab1be0 100755 --- a/css/style.css +++ b/css/style.css @@ -2134,12 +2134,12 @@ footer { .article .main-content-text p { margin-bottom: 1rem; line-height: 1.4; } - .article .main-content-text p strong { - font-weight: bold; } - .article .main-content-text p em { - font-style: italic; } .article .main-content-text p:first-child { margin-top: 0 !important; } + .article .main-content-text strong, .article .main-content-text b { + font-weight: bold; } + .article .main-content-text em, .article .main-content-text i { + font-style: italic; } .article .main-content-text ul, .article .main-content-text ol { line-height: 1.4; padding-left: 0.8rem; } diff --git a/functions.php b/functions.php index 4ab48fe..06f6e3e 100755 --- a/functions.php +++ b/functions.php @@ -35,6 +35,8 @@ require_once __DIR__ . '/inc/admin-tweaks.php'; require_once __DIR__ . '/inc/admin-users-filter.php'; // Patchs Pods : validation conditionnelle requise, erreurs de sauvegarde require_once __DIR__ . '/inc/pods-conditional-required.php'; +require_once __DIR__ . '/inc/pods-custom-simple-decode.php'; +require_once __DIR__ . '/inc/pods-taxonomy-sync.php'; require_once __DIR__ . '/inc/pods-save-error-handler.php'; require_once __DIR__ . '/inc/post-title-required.php'; // Helpers partagés des pages d'archives (filtres GET, rubriques, « Autres ») diff --git a/inc/pods-custom-simple-decode.php b/inc/pods-custom-simple-decode.php new file mode 100644 index 0000000..4d15f69 --- /dev/null +++ b/inc/pods-custom-simple-decode.php @@ -0,0 +1,107 @@ +). + * + * Symptôme : sélectionner « Journée d'étude » dans le menu `type_*` puis + * enregistrer ne sauvegarde rien — le champ reste vide. + * + * Cause : le front-end Pods (DFV/React) encode la *valeur* des options avec + * htmlspecialchars (ex. « Journée d'étude » → « Journée d'étude »), alors + * que la liste des valeurs valides (`pick_custom`) contient l'apostrophe brute. + * À la sauvegarde, PodsAPI::save_pod_item compare la valeur reçue aux options + * autorisées (isset($custom_values[$v])) : « Journée d'étude » ne matche + * aucune clé → la valeur est rejetée, et PodsMeta l'écrit vide. + * + * Correctif : on rejoue l'inverse de l'encodage (html_entity_decode) sur la + * valeur des champs pick custom-simple dans `pods_api_pre_save_pod_item_post`, + * qui s'exécute *avant* la validation des options. « Journée d'étude » + * redevient « Journée d'étude » et matche l'option. Sans effet sur les valeurs + * sans caractère spécial (décodage no-op) ni sur les données existantes. + */ +add_filter( 'pods_api_pre_save_pod_item_post', 'thalim_decode_custom_simple_entities', 10, 3 ); + +function thalim_decode_custom_simple_entities( $pieces, $is_new_item, $id ) { + if ( empty( $pieces['fields'] ) ) { + return $pieces; + } + + foreach ( $pieces['fields'] as $name => $field_data ) { + // Ne cibler que les pick « custom-simple » (options en dur via pick_custom). + if ( 'pick' !== pods_v( 'type', $field_data ) ) { + continue; + } + if ( 'custom-simple' !== pods_v( 'pick_object', $field_data ) ) { + continue; + } + + $value = isset( $field_data['value'] ) ? $field_data['value'] : null; + if ( null === $value || '' === $value ) { + continue; + } + + $decoded = thalim_html_entity_decode_deep( $value ); + if ( $decoded !== $value ) { + $pieces['fields'][ $name ]['value'] = $decoded; + } + } + + return $pieces; +} + +/** + * Pendant côté AFFICHAGE du même bug d'encodage. + * + * Symptôme : après avoir enregistré « Journée d'étude », le menu de la page + * d'édition ré-affiche « -- Sélectionnez -- » alors que la valeur est bien + * stockée (la pastille s'affiche sur le post). + * + * Cause : Pods construit la *valeur* (`id`) de chaque option DFV via + * html_entity_decode( esc_html( $id ), ENT_COMPAT ) (PodsField_Pick:: + * build_dfv_field_item_data_recurse_item). esc_html encode l'apostrophe en + * ', mais ENT_COMPAT NE décode PAS les apostrophes → l'option garde la + * value « Journée d'étude », qui ne correspond pas à la valeur stockée + * brute « Journée d'étude » → le