Dica: Ajustando os permalinks para migração Blogspot -> Wordpress

A @Nospheratt Nospheratt me procurou ontem, com um perrengue danado: Migrando os posts do Blogando por Dinheiro para um novo blog, ela percebeu que os permalinks estavam completamente diferentes. No blogspot, acentos e outros caracteres são eliminados por completo, e há um limite de 40 caracteres, coisa que não acontece no WP. Assim, o título “PARTICIPE DA CAMPANHA GRAVEHEART NO NERDCAST JÁ!!!”… não, espera, péssimo exemplo… No título “Vovô viu a vulva de Vovó” o permalink no wordpress seria ‘vovo-viu-a-vulva-de-vovo’, normal, mas no blogspot ficaria ‘vov-viu-a-vulva-de-vov’, e ainda cortaria qualquer coisa acima dos 40 caracteres. E isso é algo que, até onde pude ver, a ferramente de migração do WP não verifica.

Normalmente, não seria algo a se preocupar. Mas pode ser ruim se você pretende utilizar um ‘redirect’ nas páginas e não perder PR ou visitantes. Sem contar que é um saco ter que pedir pra todo mundo ficar atualizando os trackbacks manualmente, na pior das hipóteses. E aí, o que fazer?

Após buscas infrutíferas no Google, Nospheratt resolveu acionar o suporte 30 horas do Graveheart (8 no trabalho, 24 em qualquer lugar - e o primeiro que fizer gracinha terá o IP banido). Verificando o problema (e fazendo mais uma busca no google, pra garantir) pude perceber que haviam poucas soluções para o problema, a não ser um rascunho de plugin para limpar a URL. OK, o script era bom, mas faltava fazer os ajustes necessários para adaptar e fazer o bicho rodar pra salvar o dia da Nospheratt. Utilizando meus profundos conhecimentos em POG, peguei algumas partes de script que já mantenho prontos e fiz as alterações necessárias, criando um script que retira os acentos dos permalinks, E delimita o mesmo em 40 caracteres.

Após alguns teste e remoção de bugs, o script foi rodado, e a nova versão do Blogando por Dinheiro deve estar no ar em breve. Normalmente, eu deixaria essa ‘costura de códigos’ em um canto qualquer, escondido dos olhares de pessoas muito mais capazes do que eu, mas a pedido da Nosphie, resolvi disponibilizar o código para todos. Assim, caso alguém passe pelo mesmo problema, já tem uma solução. Ou, caso alguém pegue o código e consiga melhorá-lo, pode tentar incluir no próprio importador do Wordpress. Enfim, vamos ao que interessa. Show me the code!

arquivo permalinks.php

<?
//host, usuário e senha: normalmente, a mesma coisa que está no config do WP

$DB_HOST = "localhost";
$DB_USER = "root";
$DB_PASSWORD = "";
$DB_NAME = "wp";
$nova_conexao = mysql_connect($DB_HOST,$DB_USER,$DB_PASSWORD);
if (!$nova_conexao){
print "Falha na conexão";
}

$auto_db = mysql_select_db($DB_NAME);

//aqui começa a função para acertar os permalinks
function geraUrlLimpa($texto){
/* função que gera uma texto limpo pra virar URL:
- limpa acentos e transforma em letra normal
- limpa cedilha e transforma em c normal, o mesmo com o ñ
- transforma espaços em hífen(-)
- tira caracteres invalidos
by Micox - elmicox.blogspot.com - www.ievolutionweb.com
*/
//desconvertendo do padrão entitie (tipo á para á)
$texto = html_entity_decode($texto);
//tirando os acentos
$texto = eregi_replace('[áàãâä]‘,”,$texto);
$texto = eregi_replace(’[éèêë]‘,”,$texto);
$texto = eregi_replace(’[íìîï]‘,”,$texto);
$texto = eregi_replace(’[óòõôö]‘,”,$texto);
$texto = eregi_replace(’[úùûü]‘,”,$texto);
$texto = eregi_replace(’[-]‘,”,$texto);
//parte que tira o cedilha e o ñ
$texto = eregi_replace(’[ç]‘,”,$texto);
$texto = eregi_replace(’[ñ]‘,”,$texto);
//trocando espaço em branco por underline
$texto = eregi_replace(’( )’,'-’,$texto);
//tirando outros caracteres invalidos
$texto = eregi_replace(’[^a-z0-9\-]‘,”,$texto);
//trocando duplo espaço (underline) por 1 underline só
$texto = eregi_replace(’–’,'-’,$texto);
$texto = substr($texto, 0, 40);
return strtolower($texto);
}

$sql = mysql_query("SELECT ID, post_title, post_name from wp_posts") or die(mysql_error());

while ($row = mysql_fetch_array($sql)) {

$titulo = geraUrlLimpa($row[post_title]);

//debug.
echo "<p><b>O título do post é:</b> $row[post_title] <br><b>O permalink atual é:</b> $row[post_name] <br><b>O permalink vai ficar assim:</b> $titulo </p>”;

//descomente essa parada para fazer as alterações no Banco de Dados. Mas só faça isso se tiver certeza de que está tudo certo!
//$sql3 = mysql_query("UPDATE wp_posts SET post_name = '$titulo' WHERE ID = '$row[ID]‘”) or die(mysql_error());
}
?>

Depois de salvo, jogue o arquivo para a sua pasta raís do WP, e acesse pelo navegador, como em http://www.<seublog>/permalinks.php se der tudo certo, seus permalinks ficarão permanentemente no formato do blogspot. :)

E, vejam só, tem gente que diz não há mais amizade e companheirismo na blogosfera. :P

PS: O Jonnyken também ajudou a Nospheratt, mas ele não conta, só estou linkando por cortesia profissional. :P

Compartilhe:
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • BlogMemes
  • Live
  • Rec6
  • Reddit
  • StumbleUpon
  • Technorati
  • TwitThis
  • dihitt
  • E-mail this story to a friend!
  • PlugIM
  • ueba

Technorati Tags: , , , ,

  • By Jonny, novembro 8, 2007 @

    Obrigado pela “cortesia profissional” rs rs rs! meu 1o link aqui!

    Eu trocaria toda aquela parte de conectar no banco de dados simplesmente por

    include “wp-login.php”;

    Já que nesse aquivo tem todas as configurações do Wordpress (levando em conta que você colocaria o php na raiz do blog) :)

  • By Victor, novembro 9, 2007 @

    Essa mania de falar: “terá o IP banido”.
    Qualquer dia pertubo um blogueiro de um computador de uma grande rede (universidades, repartições públicas, etc) para, no intuito de impedir meu acesso ao blog, bloquear, de uma tacada só, mais de mil computadores com acesso compartilhado. Sem contar que uso OI-Velox, e, a cada conexão, tenho um IP diferente e o próximo que pegar meu IP (bloqueado) não terá acesso.

  • By Graveheart, novembro 9, 2007 @

    Da série: “Não entendo piadas complicadas”…. :)

  • By Norberto Kawakami, novembro 10, 2007 @

    Suporte 30 horas ou 32 horas? he, he, he… oops! Não era essa a piada?

    abraço

  • By Micox, novembro 14, 2007 @

    Opa, valeu a adaptação do meu script aí pra wordpress. Na verdade eu a fiz sem nem pensar no wordpress, mas agora percebo que os usuários do wp serão os maiores beneficiados.
    Linkarei esta sua solução lá na minha postagem.

    Té mais.

  • By W Brown, junho 16, 2008 @

    Cara, to num perrengue danado para fazer essa migração. Não conigo por nada no mundo importar os posts do blogspot e aplicar essa parada que você fez ai acima.

    Será que você pode me dar uma ajuda?

Other Links to this Post

  1. Passo-a-passo como fazer a migração do Blogspot para Wordpress | DCarbono — fevereiro 23, 2008 @

Logos | Icons | WordPress Themes

GuraveHaato desu ka? © 2008 All rights reserved.