停止过滤WordPress函数wp_insert_post

Mic*_*zen 6 wordpress

我必须对WordPress中构建的网站进行一些小的更改,我遇到了一些wp_insert_content函数的问题.此函数对输入进行了清理,将一些HTML标记完全取出(如)并删除其他标记.我想关闭它,并在任何地方找到http://pp19dd.com/2010/06/unfiltered-wp_insert_post/的链接,其中解决方案是添加

'filter' => true
Run Code Online (Sandbox Code Playgroud)

到帖子输入数组.

这篇文章是从2010年开始的,我从2011年发现了额外的一行(http://web.archiveorange.com/archive/v/TDTh42SUwDEc1GFmSrvU).这一行写道:

unset( $postarr[ 'filter' ] );
Run Code Online (Sandbox Code Playgroud)

并且在将输入与默认值合并之后以及在清理之前立即调用.在我看来,这一行取消了上面的'filter'=> true语句.实际上,如果线路在那里就会发生消毒,如果线路被取出则消失.

所以简单的解决方案是添加'filter'=> true并删除函数中的额外行.但问题是我不知道该函数在哪里使用,我想知道在WP代码中是不是很聪明.WP的更新无论如何都会恢复它.那么......有没有其他方法可以阻止此功能清理输入?

Dha*_*ang 6

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

remove_all_filters("content_save_pre");
$post_id = wp_insert_post($post);
Run Code Online (Sandbox Code Playgroud)

其他可能的过滤标签是:

  • pre_content
  • pre_post_content
  • content_pre 如果它不起作用,也可以逐个尝试.