停止过滤WordPress功能wp\u insert\u post

停止过滤WordPress功能wp\u insert\u post,wordpress,Wordpress,我不得不对WordPress内置的网站做一些小改动,我遇到了一些关于wp_insert_内容功能的问题。此函数用于对输入进行sanatizes,将一些HTML标记完全去掉(如),并删除其他标记上的属性。我想把它关掉,我在任何地方都能找到一个链接,链接到解决方案要添加的地方 'filter' => true 到posts输入数组 这篇文章来自2010年,我发现2011年增加了一行()。该行内容如下: unset( $postarr[ 'filter' ] ); 并在将输入与默认值合并后立

我不得不对WordPress内置的网站做一些小改动,我遇到了一些关于wp_insert_内容功能的问题。此函数用于对输入进行sanatizes,将一些HTML标记完全去掉(如),并删除其他标记上的属性。我想把它关掉,我在任何地方都能找到一个链接,链接到解决方案要添加的地方

'filter' => true
到posts输入数组

这篇文章来自2010年,我发现2011年增加了一行()。该行内容如下:

unset( $postarr[ 'filter' ] );
并在将输入与默认值合并后立即调用,然后再进行清理。在我看来,这一行取消了上面的'filter'=>true语句。事实上,如果管道在那里,消毒就会发生,如果管道被取出,消毒就会消失


因此,简单的解决方案是添加'filter'=>true并删除函数中的额外行。但问题是,我不知道该函数在其他地方使用,我想知道在WP代码中进行黑客攻击是否明智。WP的更新无论如何都会恢复它。所以是否有其他方法阻止此功能对输入进行清理?

可能有其他插件正在尝试清理内容,在这种情况下,删除所有过滤器是唯一的选择,请尝试以下操作:

remove_all_filters("content_save_pre");
$post_id = wp_insert_post($post);
其他可能的过滤器标签包括:

  • pre_内容
  • pre\u post\u内容
  • content\u pre
    如果不起作用,也可以逐个尝试

我也在导入内容正文中带有s的帖子。 我整个上午都在寻找解决方案,关于这个话题已经有了一些讨论。到目前为止

kses_remove_filters();
没有为我做任何事,也没有评论这两行:

unset( $postarr[ 'filter' ] ); // overrides 'filter' => true since 3.0 i guess
$postarr = sanitize_post($postarr, 'db');
在wp_中,在post.php中插入_post()(默认值在第2704行)

第2874行还有一个有趣的地方:

$data = apply_filters('wp_insert_post_data', $data, $postarr);
这似乎可能是我们麻烦的根源,但我是个新手,无法独自解决这个问题

真的,真的,非常需要帮助!哦,我不能评论,很抱歉垃圾邮件行为。 我想保持这个线程打开,并找到一个解决方案

我想它在我发布之前就起作用了,但是我导入的内容已经去掉了HTML标记
最简单的解决方法是在插入文章后手动覆盖内容,但这仅适用于隔离环境或导入

$wpdb->update($wpdb->posts, array("post_content"=>$content->content), array("ID"=>$postid), array("%s"), array("%d"));
不管怎样

remove_all_filters("content_save_pre");

我成功了

代表匿名用户。。。编辑它似乎可以做到这一点:
kses_remove_filters();wp_insert_post($my_post);kses_init_过滤器()问题已解决!我正在用上一个wordpress进行测试,它允许我插入html标记(图像、iFrame等等)。它到底在移除哪个标签?在上面的例子中,你的例子被剥去了!这可能有效,但删除所有过滤器是一个非常非常糟糕的主意。有一些过滤器可以阻止PHP被注入数据库,因此您应该找到要删除的正确过滤器,并使用
remove\u filter()
我想以post title的形式添加post title,但它的拒绝字体标记重复我在另一个回答中所说的:删除所有过滤器是一个非常非常糟糕的主意。有一些过滤器可以阻止将PHP注入数据库,因此您应该找到要删除的正确过滤器,并使用
remove\u filter()