WordPress解决post_content换行符、双引号等特殊字符,存入数据库丢失反斜杠的问题

WordPress二次开发中,遇到一个克隆文章的业务,原理倒是很简单,读取原文信息,包括标题、简介、内容和分类等,然后新建一篇文章,依次插入原文的各项数据。

问题出在post_content字段上,数据库存储的内容是换行符:\n,读取出来是:\\n,再此存入数据库后,变成了:n

很明显,是丢失了反斜杠,无疑会导致内容显示错乱。

解决方法是addslashes()函数补充反斜杠,WordPress内核中封装了此函数,名为wp_slash,如此,更新或者插入新文章时,正确用法为:

wp_update_post( wp_slash( (array) $post ), true, false );

wp_insert_post( wp_slash( (array) $post ), true, false );

附上wp_slash源码:

function wp_slash( $value ) {
	if ( is_array( $value ) ) {
		$value = array_map( 'wp_slash', $value );
	}

	if ( is_string( $value ) ) {
		return addslashes( $value );
	}

	return $value;
}

addslashes() 函数返回在预定义的字符前添加反斜杠的字符串。

  • 单引号(’)
  • 双引号(”)
  • 反斜杠(\)
  • NULL

(版权归cpury.com所有,转载请注明出处。)