WP Manifestindependent plugin directory
manifest / editor / wp-social-link-block-extensions

Social Link Block Extensions

Estende o bloco nativo core/social-link do WordPress com ícones de serviços personalizados — totalmente integrado no editor de blocos e no frontend, sem substituir ou envolver o bloco.

by Itamar Silva · github.com/silvaitamar/wp-social-link-block-extensions

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/silvaitamar/wp-social-link-block-extensions/archive/refs/heads/main.zip

Readme

Social Link Block Extensions

Estende o bloco nativo core/social-link do WordPress com ícones de serviços personalizados — totalmente integrado no editor de blocos e no frontend, sem substituir ou envolver o bloco.

O problema

O WordPress inclui ~30 serviços nativos no core/social-link (LinkedIn, GitHub, X, Bluesky…). Serviços fora dessa lista — plataformas regionais de freelancers, redes de nicho, canais de marca própria — não têm ponto de extensão oficial.

As alternativas comuns são frágeis:

  • core/html com SVG fixo — quebra a editabilidade do bloco
  • Truques com CSS content: — invisível no editor
  • Plugins de terceiros de ícones sociais — substituem o bloco nativo inteiro, perdendo a UX do inseridor e a integração com o tema

A solução

O WordPress 6.9 introduziu o filtro block_core_social_link_get_services, a primeira API oficial do servidor para registrar serviços personalizados. Combinado com registerBlockVariation no lado do JS, agora é possível adicionar um serviço personalizado que se comporta de forma idêntica aos nativos.

Este plugin implementa esse padrão de forma limpa:

Lado Mecanismo O que faz
PHP block_core_social_link_get_services Injeta nome + SVG no registro do servidor → ícone resolve no frontend
JS registerBlockVariation Registra a variação no editor → ícone aparece no inseridor do Social Links

Sem build step. O script do editor (assets/editor.js) é ES5 puro contra as APIs públicas wp.blocks / wp.element.

Correção do shape do ícone

O componente <Icon> do @wordpress/components tem múltiplos branches de renderização conforme o tipo da prop icon. Apenas icon.type === 'svg' dispara a atribuição de width=size height=size que torna o botão quadrado (o border-radius: 9999px no .wp-block-social-link produz círculo num quadrado, e pill num retângulo).

Este plugin constrói o ícone com wp.element.createElement('svg', ...) — sem wrapper <span>, sem dangerouslySetInnerHTML — para entrar no branch correto e renderizar de forma idêntica aos ícones nativos em qualquer tamanho.

Requisitos

  • WordPress 6.9 ou superior (o filtro block_core_social_link_get_services foi introduzido no 6.9)
  • PHP 8.0 ou superior

Adicionando um novo serviço

  1. Adicione o arquivo SVG em includes/icons/<slug>.svg
    • viewBox="0 0 24 24", sem atributos width/height
    • Um ou mais elementos <path fill="currentColor" d="...">
  2. Adicione uma entrada em Social_Link_Block_Extensions::SERVICES em social-link-block-extensions.php:
    private const SERVICES = array(
        'workana'    => 'Workana',
        'meu-servico' => 'Meu Serviço', // ← adicionar aqui
    );
  3. Pronto. O filtro PHP e a variação JS são gerados a partir da mesma constante — sem duplicação.

Estrutura de arquivos

social-link-block-extensions/
├── social-link-block-extensions.php   ← bootstrap do plugin + registros PHP
├── assets/
│   └── editor.js                      ← registerBlockVariation (sem build step)
└── includes/
    └── icons/
        └── workana.svg                ← apenas viewBox, fill="currentColor"

Licença

GPL-2.0-or-later

Read the full README on GitHub →