Probleme dans les metabox : guillemets/metabox (Créer un compte)

  • Statut : non résolu
4 sujets de 1 à 4 (sur un total de 4)
  • Auteur
    Messages
  • #544652
    Naad
    Membre
    Initié WordPress
    3 contributions

    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 :s.
    Peut être les ai-je mal utilisées.
    Auriez vous une indication a me donner?

    #984716
    Naad
    Membre
    Initié WordPress
    3 contributions

    up

    #984717
    artenis
    Participant
    Chevalier WordPress
    224 contributions

    Salut,

    est-ce qua ça peut vous aider:
    http://queryposts.com/function/wp_specialchars_decode/

    #984718
    Naad
    Membre
    Initié WordPress
    3 contributions

    En voila une fonction intéressante merci! 🙂
    Mais malheureusement non, cela n’a pas résolu le problème… :s

    $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.

4 sujets de 1 à 4 (sur un total de 4)
  • Le forum ‘Utilisation spécifique de WordPress’ est fermé à de nouveaux sujets et réponses.