WordPress Tutorial: Usando a Shortcode API do WordPress

Pois é, a API (Application Programming Interface ou Interface de Programação de Aplicativos, ou algo assim…) para usar shortcodes está disponível desde a versão 2.5 e foi um grande ganho para os desenvolvedores de plugins e temas. Mas apesar disso ainda é muito pouco comentada.

Ok, mas o que é um shortcode? É um código que, se inserido no conteúdo de um post, funciona como um macro, sendo processado em separado, possivelmente por uma função do usuário, antes de ser exibido no navegador.

Há muitos plugins que adotam esse método, mas sem usar a API – você insere um código no conteúdo do post e o plugin transforma aquilo em outra coisa. Antes isso só era possível criando uma rotina que filtrasse o conteúdo do post, usando o filtro the_content. Nesse caso, todo o tratamento e substituição desse texto era feito por nós.

Um shortcode se parece muito com uma TAG HTML, mas no lugar de ‘<‘ e de ‘>’, usaremos ‘[‘ e ‘]’. No mais é em tudo semelhante, incluindo os parâmetros que se declara dentro da abertura da tag e a capacidade de receber um conteúdo ‘envolto’ nessa tag (ou shortcode). Vamos imaginar o shortcode ‘testcode’, ele poderia se parecer com qualquer um dos exemplos abaixo.

[testcode]
[testcode prop1="1" prop2="2"]
[testcode]Algum conteúdo talvez em <i>HTML</i>[/testcode]
[testcode prop1="1" prop2="2"]Algum conteúdo talvez em <i>HTML</i>[/testcode]

Mas para um shortcode ser real, tem que haver uma função para manipular o código e fazemos isso com add_shortcode. A função manipuladora deve:

  • estar pronta para receber dois parâmetros:
    1. um array associativo contendo os parâmetros declarados no shortcode e seus respectivos valores.
    2. o conteúdo do shortcode – aquilo que estava entre a abertura e o fechamento do mesmo – se houver.
  • retornar o resultado do processamento, não imprimí-lo.

Vamos tentar desenvolver aqui um exemplo que seja útil… vamos montar como um plugin, com a finalidade de esconder determinados trechos da publicação de quem não está logado. Que tal? a idéia me parece boa.

Nosso shortcode (restricted) vai permitir escrever coisas no post que só poderão ser vistas por usuários logados. Se level foi definido, apenas usuários com user_level maior ou igual a level poderão ver o conteúdo.

Se o usuário definiu o parâmetro msg e o visitante não estiver logado ou o nível for insuficiente, o texto em msg será exibido.

/*
Plugin Name: Restricted Content
Version: 1.0
Plugin URI:
Author: Cau Guanabara
Author URI: https://www.caugb.com.br
Description: Hide some parts of your posts from non-logged users
*/

function restricted_content($attrs, $content = 0) {
  if(!isset($attrs['msg'])) $attrs['msg'] = '';
  if(!is_user_logged_in()) return $attrs['msg'];
  if(isset($attrs['level'])) {
  global $current_user;
  get_currentuserinfo();
    if((int)$attrs['level'] > (int)$current_user->user_level) return $attrs['msg'];
  }
return $content;
}
add_shortcode('restricted', 'restricted_content');

Posts Similares

  • Flash Uploader: Como o desativar?

    DIas atrás, tentando atualizar este site quando não estava em casa, sentei no PC de um amigo para anexar uma imagem na matéria que estava escrevendo, quando me deparei com um problema intrigante. Ao clicar no botão ‘Adicionar uma imagem’ e tentar enviar a ilustração que daria um brilho a mais ao texto escrito, o…

  • Migração WordPress – Importando arquivos XML maiores que 2 Mb

    Nosso querido WordPress tem uma conhecida função no painel administrativo que nos permite exportar todo o conteúdo criado em nosso blog para um arquivo XML, para assim permitir que importemos tais dados em uma nova instalação de nosso blog (normalmente usado na hora da migração de servidor). Tal função funciona muito  bem se vocês estiver…

  • Como criar usuário WordPress sem acesso ao Banco de Dados e WP-Admin

    Essa semana me procuraram com uma pergunta inusitada. Valério, perdi o acesso ao meu painel administrativo do WordPress, e estou sem acesso ao banco e como estou somente criando um template, só tenho acesso à pasta do template via FTP. Como resolver esse problema? Bom, essa pessoa me perguntou isso num sábado a noite e,…

  • Mais cores para a seção administrativa do WordPress 3.8

    Uma das coisas que mais gostei no WordPress 3.8 foi o novo esquema de cores para a parte administrativa do WordPress. Não só das que vem como padrão, mas já vislumbrando a possibilidade de criar mais esquemas e dar uma cara diferente para cada projeto, os personalizando ainda mais. Se você não encontrar um esquema…

  • WordPress 2.9: como usar miniaturas nos posts?

    A versão 2.9 do WordPress introduziu uma funcionalidade que a meu ver é básica e já era amplamente utilizada, mas sem padronização. Cada desenvolvedor fazia à sua própria maneira: miniaturas para os posts.

  • Como alterar o logotipo da página de login do WordPress

    Por padrão, em todo site em WordPress que desenvolvemos, a página de login presente em seusite.com.br/wp-login.php possui o logo oficial do WordPress. Entretanto, muitos demonstram a vontade de alterar esta logo para a logo de seu site. Há um modo de alterar este logo e é isto que veremos na dica de hoje.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

4 Comentários

  1. Caro NecoBoy,

    Para se andar de bicicleta não é necessário compreender as técnicas de um ciclista profissional. Porque para “tentar” criar um plugin o amigo João Eduardo deveria compreender aos mínimos detalhes o artigo em questão. NecoBoy lhe aconselho a se expirar em algumas frases dos sábios antigos, pois eles não são nomeados gênios atoa: “Uma longa viagem começa com um único passo” | “Quem nunca errou. Nunca tentou” e assim por diante.