我有一些旧的永久链接(帖子,页面,标签),其中包含现在非法的字符 - 而且这些字符不再有用了。
在WP的早期版本中,允许使用非拉丁字符,但在较新版本中有所改变。
有没有办法从这些永久链接清理数据库(将它们转换为允许的格式)?
答案 0 :(得分:3)
您可以在所有帖子中使用wordpress功能sanitize_title( $title);
$posts = get_posts(array('post_type' => array('post', 'page'))
foreach($posts as $post)
{
$post[post_name] = sanitize_title( $title);
wp_update_post( $post );
}
答案 1 :(得分:1)
如果您知道这些字符是什么,以及您要用它们替换它们,您可以编写一个简单的PHP脚本来从数据库中获取数据,然后使用preg_replace()
来修复PHP端的字符,然后用修复程序更新表。这是我提出的一个简单例子:
$query = "SELECT field, primarykey FROM table WHERE field LIKE "(weird character)";
/* run the query, blah blah */
$result = mysql_query($query);
$weird_character = "/weird character/";
$good_character = "good character";
$replace = "UPDATE table SET field='$field' WHERE field='$row['field']'";
while($row=mysql_fetch_array($result, MYSQL_ASSOC))
{
$field = preg_replace($bad_character, $good_character, $row['field']);
$replace_result = mysql_query($replace);
}
如果你有大量的链接,这将需要永远。如果它少量,这应该足够有效,你只会运行一次。
答案 2 :(得分:0)
如果您需要修改网址,也可以使用标准的wordpress功能esc_url_raw。此函数可以消除无效字符,删除危险字符,并验证网址是否具有正确的协议集(http,https,ftp等):
esc_url_raw( $current_url );