0

我有一些旧的永久链接(帖子、页面、标签),其中包含现在非法的字符——这些不再起作用了。

在以前的 WP 版本中,允许使用非拉丁字符,但在较新的版本中有所改变。

有没有办法从这些永久链接中清除数据库(将它们转换为允许的格式)?

4

3 回答 3

3

sanitize_title( $title);您可以在所有帖子中使用 wordpress 功能

$posts = get_posts(array('post_type' => array('post', 'page'))
foreach($posts as $post)
{

 $post[post_name] = sanitize_title( $title);

  wp_update_post( $post );

 }
于 2012-04-18T10:15:44.490 回答
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);
}

如果你有大量的链接,这将需要很长时间。如果它的数量很少,这应该足够有效,无论如何你只会运行一次。

于 2012-04-18T09:59:38.563 回答
0

当然,如果您需要修改 url,也可以使用标准的 wordpress 函数 esc_url_raw。此功能可以消除无效字符,删除危险字符,并验证 url 是否具有正确的协议集(http、https、ftp 等):

esc_url_raw( $current_url );
于 2012-11-26T18:53:56.137 回答