Ícone do site Linha de Comando

JSON-LD Dinâmico com PHP: Gerando dados estruturados direto do banco

Além de exemplos estáticos, é comum precisar gerar JSON-LD dinamicamente a partir do banco de dados. Isso é essencial em sites de notícias, onde cada página possui conteúdo único.

O Problema

Manter JSON-LD fixo não escala em sistemas dinâmicos. Em portais de notícias, os dados como título, descrição, data e perguntas frequentes vêm do banco.

Sem automatizar isso:

A Solução

Gerar o JSON-LD dinamicamente com PHP, utilizando dados vindos do banco de dados.

Exemplo de tabela (faq_noticia)

CREATE TABLE faq_noticia (
    id INT AUTO_INCREMENT PRIMARY KEY,
    noticia_id INT,
    pergunta VARCHAR(255),
    resposta TEXT
);

Consulta no banco

$noticia_id = 10;

$sql = "SELECT pergunta, resposta FROM faq_noticia WHERE noticia_id = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$noticia_id]);

$faqs = $stmt->fetchAll(PDO::FETCH_ASSOC);

Gerando JSON-LD com PHP

$faqSchema = [
    "@context" => "https://schema.org",
    "@type" => "FAQPage",
    "mainEntity" => []
];

foreach ($faqs as $faq) {
    $faqSchema["mainEntity"][] = [
        "@type" => "Question",
        "name" => $faq['pergunta'],
        "acceptedAnswer" => [
            "@type" => "Answer",
            "text" => $faq['resposta']
        ]
    ];
}

$jsonLd = json_encode($faqSchema, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);

Saída no HTML

echo '';
echo $jsonLd;
echo '';

Boas práticas

Conclusão

Integrar JSON-LD com o banco de dados via PHP é o caminho natural para qualquer sistema dinâmico. Isso garante escalabilidade, consistência e melhora direta na forma como o Google entende seu conteúdo.

Em projetos reais, essa abordagem é praticamente obrigatória.

Sair da versão mobile