- Statut : non résolu
- Ce sujet contient 3 réponses, 2 participants et a été mis à jour pour la dernière fois par
Naad, le il y a 10 années et 2 mois.
-
AuteurMessages
-
26 novembre 2014 à 11 h 48 min #544652
Bonjour,
Ma configuration WP actuelle
– Version de WordPress : Version 4.0.1
– Version de PHP/MySQL : 5 sans doute
– Thème utilisé : thème perso (nomé alex_drive)
– Extensions en place : TinyMCE Advanced
– Nom de l’hebergeur : OVH
– Adresse du site : http://www.choublog.fr/alex/Problème(s) rencontré(s) : j’ai crée un custom-post comprenant différentes metabox et j’aimerai permettre à l’utilisateur d’y inscrire/enregistrer du texte qui pourrait éventuellement contenir des guillemets/apostrophes ou d’autres éléments pouvant être interprétés comme du code.
Je ne veux pas que ces éléments soient interprétés mais qu’ils s’affichent et s’enregistrent tel que l’utilisateur les a inscrits, comme cela ce passe pour le contenu standard du post (the_content()).
Voici le code me permettant d’enregistrer et d’afficher le contenu des metabox enregistrées dans la partie admin de wordpress (dans le fichier functions.php de mon template) :add_action(‘add_meta_boxes’,’metabox’);
function metabox(){
add_meta_box(‘details’,’Détails’,’metabox_formule’,’formules’,’side’,’high’);
}
function metabox_formule($post){
$donnees = get_post_meta($post->ID,’keyAdresse’,false);
$formule = unserialize($donnees[0]);
$menu1=htmlentities($formule[‘menu1′]);
echo’<label for="menu1" >Choix de plat :</label><br />
<input type="text" name="menu1" id="menu1" value="'.$menu1.'" />‘;
}
add_action(‘save_post’,’save_metaboxes’);
function save_metaboxes($post_ID){
if(!empty($_POST[‘menu1’])){
$menu1=htmlentities($_POST[‘menu1’]);
$detail = array(
‘menu1′ => $menu1
);
update_post_meta($post_ID,’keyAdresse’,serialize($detail));
}
}Je ne m’occupe pour l’instant que de menu1. J’ai donc essayé avec htmlentities() mais cela ne fonctionne pas : l’integralité des champs se vident et rien n’est enregistré. Cela fonctionne très bien quelque soit le champ si je ne post aucun » ou ‘. j’ai essayé de tout simplement les enlever avant l’enregistrement comme cela :
$menu1=str_replace(« ‘ », « »,$_POST[‘menu1’]);
$detail = array(
‘menu1’ => $menu1,Mais ca ne fonctionne pas d’avantage. J’ai également testé d’autres fonctions tel que esc_attr(), esc_html(), sanitize_text_field(), wp_unslash(). que j’ai pu trouver sur divers forum et le codex wordpress mais sans succès
.
Peut être les ai-je mal utilisées.
Auriez vous une indication a me donner?7 décembre 2014 à 9 h 36 min #984716up
7 décembre 2014 à 12 h 22 min #984717Salut,
est-ce qua ça peut vous aider:
http://queryposts.com/function/wp_specialchars_decode/10 décembre 2014 à 11 h 36 min #984718En voila une fonction intéressante merci! 🙂
Mais malheureusement non, cela n’a pas résolu le problème…$menu1=wp_specialchars_decode( $menu1, $quote_style = 0 );
$detail = array(
‘menu1’ => $menu1
);Et d’ailleurs dans le fond cela ne m’étonne pas trop puisque même « str_replace() » n’a pas fonctionné, or à défaut de résoudre le problème, il aurait au moins du le supprimer.
Cela réagit comme si ma fonction replace ou specialchars_decode ou autres n’était pas au bonne endroit. Pourtant je ne vois vraiment pas où elle serait d’avantage à sa place.
-
AuteurMessages
- Le forum ‘Utilisation spécifique de WordPress’ est fermé à de nouveaux sujets et réponses.