简短的回答;absolutely.
wp_insert_post()
将只有SQL转义内容。使用KSES library &;wp_kses() 过滤鼻涕,或esc_html()
转义全部HTML。
最重要的是,退房the codex on data validation (阅读:消毒)。
A Note On KSES: 使用wp_filter_kses() 或wp_kses_data()
应用与发布评论相同的KSES规则。两者之间的细微差别在于前者希望数据以斜杠转义(并返回相同的数据),而后者则不这样做。
WordPress(奇怪)enforces magic quotes, 所以$_POST
, $_GET
默认情况下,将添加转义斜杠。
A Note On wp_insert_post(): 此函数还希望数据数组中添加斜杠,因此需要使用add_magic_quotes() 如果不是这样的话。
Update: 并付诸实践;
$_POST[\'post_title\'] = wp_filter_nohtml_kses( $_POST[\'post_title\'] ); // also expects & returns slashes
$_POST[\'post_content\'] = wp_filter_kses( $_POST[\'post_content\'] );
$post_ID = wp_insert_post( $_POST );
// add to the fun - wp_update_post() will add slashes if $postdata is an object!
$update = ( object ) stripslashes_deep( array( \'ID\' => $post_ID ) + $_POST );
$update->post_title .= \' Updated!\';
wp_update_post( $update )