我正在开发一个wordpress门户网站。
我正在使用前端页面的ajax发送html内容(youtube iframe)。 但是当我插入该帖子时,wp_insert_post会删除其中的iframe代码。 ajax或其他地方没有问题。我想有一些过滤器。
如何禁用它并插入iframe代码?
插入前的代码 - > $_POST["content"]
<div class="line nVideo" style="text-align: center;" ><iframe id="player" type="text/html" width="650px" height="380px" src="http://www.youtube.com/embed/mY8BZsIgg74?showinfo=1&enablejsapi=1&color=white&origin=http://432designstudio.com" frameborder="0" allowfullscreen=""></iframe></div><div id="empty-line" class="nText " ><div>gasdgdsag</div>
插入后我再次呼叫内容 - &gt; get_post_field('post_content', $postID)
<div class="line nVideo" style="text-align: center"></div><div id="empty-line" class="nText "><div>gasdgdsag</div>
答案 0 :(得分:1)
WordPress具有wp_kses函数,以确保只有允许的HTML元素名称,属性名称和属性值加上只有合理的HTML实体才会出现在$ string中。在调用此函数之前,您必须从PHP的魔术引号中删除任何斜杠。
出于您的目的,您可以尝试通过在主题函数中添加此代码来删除此过滤器
function kses_remove_filters() {
// Normal filtering
remove_filter('title_save_pre', 'wp_filter_kses');
// Comment filtering
remove_filter( 'pre_comment_content', 'wp_filter_post_kses' );
remove_filter( 'pre_comment_content', 'wp_filter_kses' );
// Post filtering
remove_filter('content_save_pre', 'wp_filter_post_kses');
remove_filter('excerpt_save_pre', 'wp_filter_post_kses');
remove_filter('content_filtered_save_pre', 'wp_filter_post_kses');
}
或只是
kses_remove_filters();
希望它能解决你的问题