2009-07-16 11 views
2

J'essaie d'intégrer une vidéo flash dans une configuration personnalisée de l'éditeur tinyMCE. Il est séparé du WordPress principal, mais il est toujours dans la zone d'administration wordpress.tinyMCE & wordpress donnant des caractères impairs ... combinaison de solutions éprouvée

Le code de sortie d'un simple bloc embed youtube est la suivante:

<p><img mce_src=\"../wp-content/themes/porcelain/tinymce/jscripts/tiny_mce/plugins/media/img/trans.gif\" src=\"../wp-content/themes/porcelain/tinymce/jscripts/tiny_mce/plugins/media/img/trans.gif\" width=\"560\" height=\"340\" style=\"\" class=\"mceItemFlash\" title=\"&quot;allowFullScreen&quot;:&quot;true&quot;,&quot;allowscriptaccess&quot;:&quot;always&quot;,&quot;src&quot;:&quot;http://www.youtube.com/v/26Ywp6vUQMY&amp;hl=en&amp;fs=1&amp;&quot;,&quot;allowfullscreen&quot;:&quot;true&quot;\"></p> 

Comme vous pouvez le voir, il est échapper aux citations quand je ne veux pas que ça ...

Toute aide est massivement apprécié, et je sais que c'est une erreur d'écolier. J'ai juste besoin d'être en ligne droite.

Merci.

Répondre

2

Cela arrive souvent lorsque vous avez du code qui échappe des données avant de l'utiliser en SQL (comme il se doit) sur un serveur dont la fonctionnalité de php est activée. Cette fonctionnalité permet à PHP d'échapper automatiquement à l'obtention et à l'envoi de données lors du chargement. Si vous vous en échappez à nouveau, les choses vont mal - il est double, donc les données échappées vont dans la base de données. PHP a maintenant déconseillé cette fonctionnalité, ils ont réalisé qu'il était une nuisance, causé plus de douleur qu'il a sauvé - ils essayaient de construire en sécurité, mais finalement le développeur doit être conscient et contourner les problèmes de sécurité, plutôt que les avoir pris en charge en silence. Moi-même, j'ai fini par inclure régulièrement du code dans des trucs pour détecter si cela était activé et inverser le début de l'exécution si c'était le cas.

+0

Je pense que vous êtes probablement ici. J'enregistre les données dans une base de données mySQL. C'est une vraie douleur si c'est le cas ... hmm. Ce que j'essaie de faire est de créer un joli petit plugin pour wordpress, donc je veux éviter de toucher les fichiers core, et je veux aussi que les autres puissent utiliser ce plugin sans beaucoup de connaissances techniques (en face, pratiquement pas connaissances techniques) ... la création de fichiers php.ini etc est une grande demande. Je devrais peut-être reconsidérer comment j'obtiendrai une vidéo incorporée dans le document. – Tisch

+0

fautes de frappe sont nous !!! – Tisch

+0

a fini par faire str_replace aux deux extrémités de l'écho ... parfois la réponse est si simple !!! – Tisch

1

Si vous transférez vos données via $ _POST, il est échappé si magic_quotes est activé (il est maintenant déconseillé et supprimé automatiquement de PHP 5.4 et supérieur). Il suffit d'utiliser stripslashes() si elle est échappée, a résolu mes problèmes avec HTML étant échappé dans wordpress en utilisant tinymce, au moins.

+0

Un peu drôle, j'ai encore rencontré ce problème, et j'ai cherché stackoverflow pour une réponse - et est venu à ma propre solution. Bonne chose que j'apprends de mes erreurs .. –

1

Je l'ai fait en utilisant les fonctions "the_editor()" et "wp_editor()". Je ne pense pas que mon serveur ait des guillemets magiques activés, parce que je ne l'ai pas activé, et j'ai tout installé.

De toute façon, j'ai ajouté des stripslashes ... partout.

Quand j'appelle l'éditeur:

<?php wp_editor(stripslashes($custom_text), 'custom_text'); ?> 

Quand je vais à enregistrer les données POST:

if (isset($_REQUEST['custom_text'])) { 
    update_option('my_custom_text', esc_sql(stripslashes($_POST['custom_text']))); 
    $updated = true; 
} 

Et lorsque je récupère les données stockées:

$custom_text = apply_filters('the_content', stripslashes(get_option('my_custom_text'))); 

Ce fixe pour moi, bien que j'aimerais savoir s'il y a un autre moyen. Je pensais que les filtres avaient intégré cela, j'avais tort, mais je me demande s'il n'y a pas autre chose qui me manque.

Questions connexes