Existe uma página em algum lugar que detalha exatamente como o WordPress gera slugs para URLs? Estou escrevendo um script que precisa gerar slugs de URL idênticos aos que o WordPress gera.
Imediatamente, não posso fornecer uma página / tutorial / documentação sobre como as lesmas WP são geradas, mas dê uma olhada na sanitize_title()função.
Não obtenha uma impressão errada pelo nome da função, pois não pretende higienizar um título para uso posterior como título de página / postagem . Ele pega uma string de título e a retorna para ser usada em uma URL:
tiras de HTML e PHP
tiras caracteres especiais
converte todos os caracteres em maiúsculas
substitui espaços em branco, sublinhados e pontos por hífens / traços
reduz vários traços consecutivos para um
Não pode haver casos de ponta, onde o núcleo faz algo adicional (você tem que olhar para a fonte para verificar se sanitize_title()será sempre suficiente para gerar exatamente o mesmo que você espera), mas isso deve cobrir pelo menos 99%, se não todos, os casos .
@kaiser: Achei que você está simplesmente apaixonado pelo T5 Rewrite :) (que está na minha agenda para conferir) | e geralmente: se um título é realmente longo, o WP também corta as lesmas até um certo comprimento máximo. Esse é um daqueles casos em que não tenho certeza absoluta se isso também foi feito pelo sanitize_titlefiltro aplicado na função ou se foi tratado por outra coisa após a execução da função.
Johannes Pille
Eu acho que é o sanitize_titlefiltro que é preciso verificar. Mas também há outras funções relacionadas . Eu realmente não tenho idéia sobre isso. Às vezes parece que SimplePieé mais fácil entender do que WP_Rewriteisso. Btw: Toscho trabalha na integração da funcionalidade "Monkeyman Rewrite Analyzer" em seu plugin. É aí que as coisas começam a ficar realmente interessantes.
Kaiser
1
Considere também sanitize_title_with_dashes () se você quiser ser um pouco mais explícito sobre a geração de uma lesma amiga da URL.
Tom Auger
5
Você pode usar esta função:
staticpublicfunction slugify($text){// replace non letter or digits by -
$text = preg_replace('~[^\pL\d]+~u','-', $text);// transliterate
$text = iconv('utf-8','us-ascii//TRANSLIT', $text);// remove unwanted characters
$text = preg_replace('~[^-\w]+~','', $text);// trim
$text = trim($text,'-');// remove duplicate -
$text = preg_replace('~-+~','-', $text);// lowercase
$text = strtolower($text);if(empty($text)){return'n-a';}return $text;}
É exatamente como a função wp url sanitize funciona.
Além do WordPress , não há um modo de desenvolvedor incorporado WP_DEBUG, o que não ajuda muito nesse caso. Basicamente, o WP usa a "API de reconfiguração" , que é um wrapper de baixo nível baseado em função para a WP_Rewriteclasse, sobre o qual você pode ler no Codex . O global $wp_rewriteobjeto está ao seu serviço para inspecioná-lo ou interagir com a classe.
O plug-in "Monkeyman" adiciona uma nova página, arquivada no menu da UI do administrador em Ferramentas . O plug-in "T5 Rewrite" adiciona uma nova guia de ajuda à página Configurações > Links permanentes . Minha extensão também adiciona as guias de ajuda à página Ferramentas mencionada .
Aqui está uma captura de tela da aparência dos plug-ins "T5 Rewrite", que ajudam o conteúdo da guia.
O plug-in "T5 Rewrite" faz um trabalho maravilhoso ao ajudá-lo a inspecionar o objeto de reescrita. E faz ainda mais: adiciona novas possibilidades. Portanto, é (pelo menos em minhas instalações) parte do meu pacote básico de plugins.
O primeiro usa o savemodo, em que as tags HTML e PHP são removidas e os acentos são removidos (caracteres acentuados são substituídos por equivalentes não acentuados).
O segundo querymodo garante que todos os espaços sejam substituídos por traços -e outras pontuações removidas.
Respostas:
Imediatamente, não posso fornecer uma página / tutorial / documentação sobre como as lesmas WP são geradas, mas dê uma olhada na
sanitize_title()
função.Não obtenha uma impressão errada pelo nome da função, pois não pretende higienizar um título para uso posterior como título de página / postagem . Ele pega uma string de título e a retorna para ser usada em uma URL:
Não pode haver casos de ponta, onde o núcleo faz algo adicional (você tem que olhar para a fonte para verificar se
sanitize_title()
será sempre suficiente para gerar exatamente o mesmo que você espera), mas isso deve cobrir pelo menos 99%, se não todos, os casos .fonte
sanitize_title
filtro aplicado na função ou se foi tratado por outra coisa após a execução da função.sanitize_title
filtro que é preciso verificar. Mas também há outras funções relacionadas . Eu realmente não tenho idéia sobre isso. Às vezes parece queSimplePie
é mais fácil entender do queWP_Rewrite
isso. Btw: Toscho trabalha na integração da funcionalidade "Monkeyman Rewrite Analyzer" em seu plugin. É aí que as coisas começam a ficar realmente interessantes.Você pode usar esta função:
É exatamente como a função wp url sanitize funciona.
fonte
Núcleo ao seu serviço
Além do WordPress , não há um modo de desenvolvedor incorporado
WP_DEBUG
, o que não ajuda muito nesse caso. Basicamente, o WP usa a "API de reconfiguração" , que é um wrapper de baixo nível baseado em função para aWP_Rewrite
classe, sobre o qual você pode ler no Codex . Oglobal $wp_rewrite
objeto está ao seu serviço para inspecioná-lo ou interagir com a classe.Plug-ins que ajudam a analisá-lo.
Toschos "T5 Rewrite" - Plugin e Jan Fabrys "Monkeyman Rewrite Analyzer" - Plugin o guiarão no seu caminho. Eu escrevi uma pequena extensão para o "T5 Rewrite" para integrá-lo sem problemas ao "Monkeyman Rewrite Analyzer", que você pode encontrar no repositório de publicações "T5 Rewrite" aqui no GitHub .
O plug-in "Monkeyman" adiciona uma nova página, arquivada no menu da UI do administrador em Ferramentas . O plug-in "T5 Rewrite" adiciona uma nova guia de ajuda à página Configurações > Links permanentes . Minha extensão também adiciona as guias de ajuda à página Ferramentas mencionada .
Aqui está uma captura de tela da aparência dos plug-ins "T5 Rewrite", que ajudam o conteúdo da guia.
Vorlage = Padrão | Descrição = Explicação | Beispiele = Exemplos
Notas
O plug-in "T5 Rewrite" faz um trabalho maravilhoso ao ajudá-lo a inspecionar o objeto de reescrita. E faz ainda mais: adiciona novas possibilidades. Portanto, é (pelo menos em minhas instalações) parte do meu pacote básico de plugins.
fonte
Na verdade, se você olhar a função principal wp_insert_post (post.php), verá que ele faz o seguinte:
O principal aspecto a ser observado é que usa wp_unique_post_slug e sanitize_title:
fonte
Perdoe por retomar uma pergunta antiga, mas tive a mesma necessidade que descobri que esse método funciona perfeitamente para mim:
Este método usa uma desinfecção dupla.
O primeiro usa o
save
modo, em que as tags HTML e PHP são removidas e os acentos são removidos (caracteres acentuados são substituídos por equivalentes não acentuados).O segundo
query
modo garante que todos os espaços sejam substituídos por traços-
e outras pontuações removidas.Espero que isso ajude alguém! :)
fonte