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

  • Migração do WordPress: Movendo o WordPress com o PhpMyAdmin

    O WordPress tem um sistema bastante funcional de exportação/importação, mas quando usamos esse método para transportar nosso WordPress para uma nova hospedagem, por exemplo, importamos todos os posts e páginas com seus respectivos comentários, mas todo o resto (como plugins e configurações) é perdido. Entretanto, se temos o PhpMyAdmin instalado em ambos os servidores envolvidos…

  • Como implementar widgets no seu template WordPress?

    O processo de integração de widgets no seu template WordPress é na verdade um processo extremamente simples. Seja na sidebar, no header ou no footer do seu template, os widgets são uma forma extremamente simples de adicionar competências ao seu template, tornando-o ainda mais único e profissional. Por este processo ser tão simples é que…

  • Gerencie os Downloads feitos em seu site WordPress

    Atendendo mais uma dúvida de visitantes do Tudo Para WordPress, faço esta rápida postagem à pedido do amigo @OckTock Duas alternativas para você gerenciar e monitorar quais downloads disponibilizados estão fazendo sucesso entre seus visitantes:

  • Alterando sua senha de admin no WordPress via SQL

    Esqueceu sua senha de admin e precisa a alterar de uma maneira mais, digamos, radical ? Você pode usar este comando SQL para o alterar.. (pode ser via o phpmyadmin, por exemplo, ou console) UPDATE ‘wp_users’ SET ‘user_pass’ = MD5(‘nova_senha_aqui’) WHERE ‘wp_users’.’user_login’ = “login_do_admin”; Como você pode notar, apenas nova_senha_aqui e logins_do_admin devem ser alterados…

  • Como utilizar javascript no WordPress de forma correta?

    Muitos desenvolvedores, ao criar seus temas, fazem chamadas para arquivos javascript da forma errada, não seguindo o padrão que o WordPress recomenda. Vamos aprender esse padrão? Vem comigo 😉 Dois problemas enquanto estiver usando JavaScript em Projetos WordPress Existem basicamente dois problemas importantes que você pode encontrar se você injetar arquivos JavaScript diretamente no WordPress com código…

  • Não tema as atualizações automáticas do WordPress 3.7

    Após o lançamento do WordPress 3.7, muitas reações diferentes puderam ser observadas sobre as atualizações automáticas. De ‘Eu quero o controle das minha atualizações’ à ‘Essa atualização automática do WordPress 3.7 quebrou alguma coisa no meu site’, alguns relatos mostram que alguns usuários não estão preparados para deixar o sistema “se melhorar” sozinho. Para quebrar…

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.