O problema não dito dos shortcodes

Escrito por

em

The-Unspoken-Problem-of-Shortcodes

Os shortcodes são um dos pontos altos do WordPress. Eles são a ponte entre desenvolvedores e criadores de sites, permitindo que as pessoas insiram partes elaboradas de conteúdo em quase qualquer lugar que desejarem. Os criadores de plugins adoram os shortcodes, pois isso oferece mais flexibilidade sobre como e onde seus usuários exibem o conteúdo.

Se você não sabe o que são shortcodes e como eles se parecem, eles são aqueles textos arcaicos semelhantes a código envolvidos em colchetes. Eles se parecem com isto:

Este em específico é chamado de shortcode de incorporação (embed) e vem integrado por padrão no WordPress. Ele incorpora o vídeo da URL no seu conteúdo. Basta copiar e colar o shortcode acima no seu site se quiser fazer um teste.

Nos bastidores, o que acontece é que, quando o WordPress encontra um shortcode no seu conteúdo, ele é processado e convertido em outra coisa. No nosso caso acima, sempre que um

shortcode é detectado, o WordPress pega a URL dentro do shortcode e a compara com vários provedores de conteúdo compatíveis. Quando encontra um, ele obtém o código de incorporação iframe apropriado e o exibe no lugar.

Então, qual é o problema aqui? Parece bastante simples: você só precisa inserir um texto curto com colchetes e pronto.

É aí que entra a Shortcode API..

Shortcodes em abundância

A Shortcode API disponibiliza a criação de shortcodes para desenvolvedores. Por causa disso, os desenvolvedores podem adicionar seus próprios shortcodes dentro de seus plugins.

Isso é ótimo: agora, com apenas um pequeno trecho semelhante a código (daí o nome “shortcode”), tanto iniciantes quanto usuários avançados podem colocar praticamente qualquer tipo de conteúdo onde quiserem.

Por padrão, o WordPress possui apenas alguns shortcodes. É fácil digitá-los de cabeça porque são poucos. Mas, se você instalar alguns plugins, o número de shortcodes sobe rapidamente para uma dúzia ou mais, e em alguns casos mais de uma centena. Cada shortcode tem seu próprio conjunto de atributos e instruções de uso. A maioria dos plugins provavelmente conta com algum tipo de documentação explicando o funcionamento de todos os seus shortcodes e listando todos os parâmetros disponíveis em cada um. Mas você enlouqueceria se tentasse memorizar todos os shortcodes e seus atributos.

O problema é que não existe uma área centralizada na qual você possa consultar todos os shortcodes disponíveis no seu site e saber como usá-los.

Alguns tentam resolver o problema

Alguns plugins tentam resolver esse problema apresentando todos os seus próprios shortcodes em um menu suspenso de fácil acesso. Ao clicar em um deles, o shortcode é inserido, completo com todos os atributos possíveis para ele. Não há mais necessidade de memorizá-lo, o que é ótimo.

Screen-Shot-2016-06-22-at-11.27.09-AM

Alguns vão além e adicionam um formulário popup de configurações que inclui caixas de seleção e seletores de cores para preencher os atributos do shortcode.

Screen-Shot-2016-06-22-at-11.28.54-AM

Essa solução até que funciona. No entanto, cada plugin apenas lista seus próprios shortcodes. Portanto, se cada plugin criar sua própria forma de seletor de shortcodes, você certamente se deparará com momentos em que terá múltiplos seletores de shortcode na tela (isso já aconteceu comigo antes).

Screen-Shot-2016-06-22-at-11.28.41-AM

Em outras palavras, cada plugin faz o que quer e implementa sua própria solução para os seus próprios shortcodes. Alguns plugins adicionam um novo botão ao lado do botão “Adicionar Mídia” ou um novo botão dentro do TinyMCE.

Agora você pode estar pensando: “Por que não reunir também os shortcodes de outros plugins e incluir isso no seu menu suspenso / seletor de shortcodes também?” Bem, foi exatamente isso que pensei. Mas falar é fácil, fazer é outra história. Vou explicar o motivo daqui a pouco, mas antes vamos ver como seria uma solução ideal.

A solução ideal

O plano perfeito seria criar um plugin que reunisse todos os shortcodes disponíveis no seu site, apresentasse a lista e também ajudasse a preencher todos os atributos. E, a cada novo plugin instalado, todos esses novos shortcodes também seriam apresentados a você.

Imagine um local central onde todos os seus shortcodes ficassem reunidos para fácil acesso. Cada shortcode descreveria o que faz e a qual plugin pertence. Então, para cada atributo disponível, imagine que cada um tivesse um rótulo, uma maneira adequada de selecionar um valor para ele e uma descrição. Você veria menus suspensos, seletores de cores, botões de opção, botões de alternância e tudo mais.

Algo assim tornaria a nossa vida de criadores de sites e de conteúdo muito mais fácil. Chega de consultar diferentes documentações ou navegar por várias partes do painel de administração só para copiar o shortcode gerado para um slider que você quer usar.

A ressalva

Infelizmente, é bastante difícil fazer algo assim hoje. Não há uma maneira infalível de conhecer todos os detalhes de um shortcode. É possível obter uma lista de todos os shortcodes, mas apenas suas tags/nomes propriamente ditos; você não consegue obter nenhum detalhe adicional sobre eles, como uma lista de atributos, o que fazem e seus tipos – como uma string, uma cor ou um número. Tampouco é possível obter qualquer indício de descrição para cada atributo.

Nota para os desenvolvedores: sim, existe um terceiro argumento adicionado recentemente para a função shortcode_atts, mas ele não é um argumento obrigatório. Portanto, a menos que todos os desenvolvedores de plugins do mundo o implementem, ainda não teremos uma forma garantida de determinar todos os atributos de um shortcode.

A Shortcode API não oferece nenhum recurso para adicionar descrições de shortcodes, definição de tipos para atributos ou descrições de atributos. E, a menos que o próprio WordPress adicione uma área central para acessar shortcodes, duvido que esse recurso seja criado.

Conclusão

No momento, a tarefa de organizar os shortcodes fica a cargo de cada desenvolvedor. A menos que um método central seja desenvolvido no WordPress, espere continuar vendo vários botões de “Adicionar Shortcode” no seu painel. Se algo assim deveria ou não ser adicionado ao núcleo do WordPress é outra grande discussão por si só.

Uma alternativa

Existem plugins de construtores de páginas que lidam com isso de maneira diferente. Em vez de detectar shortcodes programaticamente, eles contam com mapeadores de shortcodes onde os usuários podem inserir manualmente cada detalhe de um shortcode. Uma vez concluído, ele fica disponível no construtor de páginas. Embora  isso funcione, esses recursos só ficam disponíveis no seu próprio site.

Nós aqui do Page Builder Sandwich estamos criando algo que esperamos que resolva esse enigma dos shortcodes. Assine nossa newsletter abaixo para receber notificações sobre nosso progresso.