web-dev-qa-db-fra.com

La fonction de rappel des paramètres de l'API insère des citations HTML de nulle part

actuellement, j'essaie d'écrire un rappel pour une option Wordpress de mon thème avec les paramètres API. Ceci est ma fonction:

    function background_callback($args){
    printf(
        'Picture 
         <input 
               type="radio" 
               name="%1$s[%2$s]" 
               onclick= "showChoosenField("%3$s")" 
               value="<?php checked("%3$s", get_option("%1$s[%2$s]"), true); ?>"
          />
         <input 
               type="radio" 
               name="%1$s[%2$s]" 
               onclick= "showChoosenField("%4$s")" 
               value="<?php checked("%4$s", get_option("%1$s[%2$s]"), true); ?>"
          />   
         Color
         <p></p>
         <label for="%2$s">%5$s / %3$s/ %4$s</label>',
        $args['option_name'],
        $args['namePic_Color'],
        $args['valuePic'],
        $args['valueColor'],
        $args['description']
        );
    }

Mais quand je regarde le navigateur, j'obtiens cette sortie:

<td>"Picture"
    <input 
          type="radio" 
          name="header_options_group[img_color_name]" 
          onclick="showChoosenField(" ")" 
          value="<?php checked(" ", get_option("header_options_group[img_color_name]"), true); ?>
          ""
    />"
    <input 
          type="radio" 
          name="header_options_group[img_color_name]" 
          onclick="showChoosenField(" ")" 
          value="<?php checked(" ", get_option("header_options_group[img_color_name]"), true); ?>
          ""
    /> Color" 
    <p></p>
    <label for="img_color_name">
          Please check if you want a Picture or a color. / / 
    </label>
</td>

D'où viennent les guillemets à la fin des lignes 7,8 et 14,15? J'ai essayé tellement de choses pour m'en débarrasser. Mais peu importe ce que je change, ils y restent ou quelques autres citations apparaissent à un autre endroit. J'ai tout concatiné, supprimé différentes parties, mais pas moyen.

Je suppose que c'est parce que le php dans le printf. Quelqu'un savait-il pourquoi cela se produit? Ou si c'est parce que le php comment puis-je changer cela fonctionne-t-il? Je n'ai plus d'idées. Je vous remercie.

1
theoretisch

Vous devez échapper aux guillemets comme celui-ci.

<input type="radio" name="%1$s[%2$s]" onclick= "showChoosenField(\'%3$s\')" value="<?php checked(\'%3$s\', get_option(\'%1$s[%2$s]\'), true); ?>"/>
0
Ranuka