2 votes

WordPress - Exécution de PHP dans le panneau d'options du thème

J'ai créé un panneau d'options de thème pour un client, mais il aimerait avoir la possibilité d'entrer du code PHP dans les zones de texte et de le faire exécuter sur le front-end.

Cependant, lorsqu'ils saisissent le code, celui-ci ne s'affiche pas correctement dans la partie frontale, veuillez consulter les deux captures d'écran suivantes :

http://i.imgur.com/alOAD.png

http://i.imgur.com/pYhW0.png

Il semble que le code soit supprimé lors de l'affichage sur le front-end. Il est affiché en utilisant ce code :

    <?php global $options;
foreach ($options as $value) {
    if (get_settings( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_settings( $value['id'] ); }
}
?>

<?php echo $ag_footer_top; ?>

Comment faire pour qu'il fonctionne correctement ? Est-ce possible ?

Si je saisis ce qui suit dans les options du thème :

<?php wp_nav_menu( array( 'theme_location' => 'first','fallback_cb'=> ” ) ); ?>

Il est enregistré dans la base de données en tant que :

<?php wp_nav_menu( array( \'theme_location\' => \'first\',\'fallback_cb\'=> ” ) ); ?>

Et elle est affichée sur le frontal comme :

\'first\',\'fallback_cb\'=&gt; ” ) ); ?&gt;

5voto

Blackbam Points 816

Tout d'abord, vous devez empêcher WordPress d'ajouter des slashs à votre contenu, en utilisant quelque chose comme :

update_option('my_option',stripslashes($_POST['my_option']));

L'autre chose, c'est que vous voulez que votre code soit exécuté... je ne sais pas comment faire exactement, mais beaucoup de plugins fournissent cette fonctionnalité, par exemple

Widget Html et Php pour les titres connectables

Vous devriez télécharger le plugin et découvrir comment il fonctionne.

Il suffit de prendre le contenu du champ dans la base de données et d'essayer de l'analyser d'une manière ou d'une autre.

2voto

relu Points 48

Utilice stripslashes pour désordonner la chaîne de caractères avant d'évaluer/afficher le code.

0voto

soju Points 6479

Vous devez remplacer con ''

0voto

PeachLabs Points 957

Vous pouvez utiliser cette fonction de PHP

PHP : eval() ;

vous pouvez prendre le code dans la zone de texte et le sauvegarder dans les options comme chaîne de caractères et quand vous voulez l'exécuter, récupérez-le dans les options et passez-le à eval.

Merci

-Shak

0voto

Chibueze Opata Points 3687

J'utilise personnellement Exec-PHP . Il doit être assez facile à utiliser pour vos clients.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X