Partilhar: WhatsApp
aulify · Sebenta
UC · Unidade de Competência · UC02832

Sistemas de gestão de conteúdos

Sebenta · WordPress, temas, plugins, headless
50h · 4.5 pontos crédito Curso: T. Desenv. Software, T. Sist. Comp. Redes ↗ Referencial oficial SNQ
Índice

Apresentação

UC02832 (50h · 4,5 pts) cobre Sistemas de Gestão de Conteúdos (CMS). Foco prático em WordPress (cerca de 40% da web), com personalização de temas, uso e desenvolvimento de plugins, segurança e performance, e introdução a CMS headless moderno.

O que é um CMS

Um Content Management System permite criar, editar, organizar e publicar conteúdo digital sem programar cada página.

Separa responsabilidades: - Conteúdo — textos, imagens, vídeos (gerido por editores não-técnicos). - Apresentação — tema/template (designers). - Funcionalidade — plugins/extensões (developers).

Vantagens

Quando NÃO usar

Panorama

CMS Linguagem Tipo Uso típico
WordPress PHP Tradicional Blogs, sites, lojas — ~40% da web
Drupal PHP Tradicional Portais grandes, governo
Joomla PHP Tradicional Sites de comunidade
Shopify SaaS E-commerce
Ghost Node Foco publicação Blogs, newsletters
Strapi Node Headless API de conteúdo self-hosted
Directus Node Headless API sobre BD existente
Contentful / Sanity Headless SaaS Apps multi-canal

WordPress · arquitectura

WordPress = PHP + MySQL/MariaDB.

wordpress/
├── wp-admin/       painel de administração
├── wp-content/
   ├── themes/     temas
   ├── plugins/    plugins
   └── uploads/    media (imagens)
├── wp-includes/    core (não tocar)
├── wp-config.php   configuração: BD, secrets, debug
└── index.php

Tipos de conteúdo

Papéis de utilizador

Papel Pode
Administrator Tudo (incl. plugins, utilizadores)
Editor Gerir todo o conteúdo
Author Publicar os próprios posts
Contributor Escrever, mas não publicar
Subscriber Só ler / gerir o próprio perfil

Princípio do menor privilégio: dar o papel mínimo necessário.

Instalação

Ambiente local (aprender)

Produção

Famous 5-minute install

  1. Descarregar WordPress de wordpress.org.
  2. Criar BD MySQL + utilizador.
  3. Copiar ficheiros para o servidor.
  4. Aceder ao site → assistente web preenche wp-config.php.
  5. Definir título, admin, senha.

Configuração pós-instalação

  1. Permalinks → Definições → Permalinks → "Nome do post" (URLs limpas, SEO).
  2. Idioma e fuso → Definições → Gerais.
  3. Apagar conteúdo demo ("Hello World", página de exemplo).
  4. Remover plugins/temas não usados.
  5. Forçar HTTPS + certificado.
  6. Backup automático configurado desde o início.
  7. Email transacional (SMTP plugin) para notificações fiáveis.

Temas

O tema controla o aspecto visual: layout, cores, tipografia, estrutura das páginas.

Tipos

Template hierarchy (clássico)

WordPress escolhe o ficheiro de template mais específico que existe:

single.php       → post individual
page.php         → página
archive.php      → listagens (categoria, autor)
404.php          → página não encontrada
index.php        → fallback universal

Ficheiros típicos:

style.css       → metadata + estilo
functions.php   → lógica (enqueue, hooks, supports)
header.php      → cabeçalho comum
footer.php      → rodapé comum
sidebar.php     → barra lateral

Child themes

Nunca editar o tema directamente — uma actualização apaga as alterações.

Criar um child theme:

wp-content/themes/astra-child/
├── style.css
└── functions.php
/*
Theme Name:  Astra Child
Template:    astra
*/
<?php
// functions.php do child
add_action('wp_enqueue_scripts', function () {
    wp_enqueue_style('parent', get_template_directory_uri().'/style.css');
    wp_enqueue_style('child', get_stylesheet_directory_uri().'/style.css', ['parent']);
});

Personalizações no child; o pai actualiza sem perder nada.

Plugins

Plugins adicionam funcionalidade sem tocar no core.

Essenciais

Categoria Plugins
SEO Yoast SEO, Rank Math
Segurança Wordfence, Sucuri, iThemes Security
Backup UpdraftPlus, BlogVault
Performance WP Super Cache, W3 Total Cache, LiteSpeed
Formulários Contact Form 7, WPForms, Fluent Forms
E-commerce WooCommerce
Page builder Elementor, Bricks, Gutenberg blocks

Cuidados

Hooks · estender WordPress

A base de como plugins/temas estendem o core sem o modificar.

Actions — executar código num momento:

add_action('wp_footer', function () {
    echo '<p>Texto no rodapé de todas as páginas</p>';
});

add_action('init', function () {
    // registar custom post type, etc.
});

Filters — modificar um valor antes de ser usado:

add_filter('the_content', function ($conteudo) {
    return $conteudo . '<p>— Publicado em Aulify</p>';
});

add_filter('excerpt_length', function () {
    return 20;   // palavras no excerto
});

Criar um plugin simples

<?php
/*
Plugin Name: Aulify Saudação
Description: Adiciona saudação no rodapé.
Version: 1.0
*/

if (!defined('ABSPATH')) exit;   // segurança: não aceder directamente

add_action('wp_footer', function () {
    echo '<div style="text-align:center">Feito com Aulify</div>';
});

Colocar em wp-content/plugins/aulify-saudacao/aulify-saudacao.php e activar no painel.

Custom Post Type

add_action('init', function () {
    register_post_type('produto', [
        'label' => 'Produtos',
        'public' => true,
        'has_archive' => true,
        'supports' => ['title', 'editor', 'thumbnail'],
        'menu_icon' => 'dashicons-cart',
    ]);
});

Cria um tipo de conteúdo "Produto" gerível no painel.

CMS Headless

Conceito

Tradicional: o CMS gere o conteúdo e gera o HTML apresentado.

Headless: o CMS só gere conteúdo e expõe-no via API (REST ou GraphQL). O frontend é independente — Next.js, Nuxt, app Flutter, etc.

            ┌─► Site Next.js
Headless CMS ┼─► App móvel Flutter
   (API)     └─► Ecrã / kiosk

Um conteúdo, múltiplos canais (omnichannel).

Vantagens e desvantagens

Headless prós: - Frontend moderno e rápido (SSG/SSR). - Multi-canal a partir de uma fonte. - Separação clara de responsabilidades. - Escalável.

Headless contras: - Precisa de equipa de developers (não há "tema pronto"). - Mais peças móveis (CMS + frontend + deploy). - Pré-visualização e edição menos imediatas.

WordPress como headless

WordPress expõe REST API nativa:

GET /wp-json/wp/v2/posts
GET /wp-json/wp/v2/pages/42

Ou WPGraphQL (plugin) para queries GraphQL. O frontend (Next.js) consome e renderiza.

Headless dedicados

Segurança

WordPress é o CMS mais atacado porque é o mais usado. Hardening é obrigatório.

  1. Actualizar core, temas e plugins — a maioria dos hacks explora versões antigas.
  2. Menos plugins, só de fontes confiáveis.
  3. Senhas fortes + MFA no wp-admin.
  4. Não usar utilizador "admin" — criar um nome próprio; remover o default.
  5. Limitar tentativas de login (plugin) — trava brute-force.
  6. WAF — Wordfence ou Cloudflare à frente.
  7. Backups automáticos e testados (restaurar de facto).
  8. HTTPS obrigatório.
  9. Permissões de ficheiros correctas (644 ficheiros, 755 pastas, wp-config 600).
  10. Desactivar edição de ficheiros no painel: define('DISALLOW_FILE_EDIT', true);.
  11. Esconder versão do WordPress e ocultar erros PHP em produção.

Performance

Apêndices

A · Cheatsheet WordPress

wp-admin/             painel
wp-content/themes     temas
wp-content/plugins    plugins
wp-config.php         config (BD, secrets)

add_action('hook', fn) executar código
add_filter('hook', fn) modificar valor
register_post_type()   tipo de conteúdo
get_template_part()    incluir template

REST API: /wp-json/wp/v2/posts
WP-CLI:   wp plugin list, wp core update

B · Glossário

CMS. Content Management System. Child theme. Tema que herda de outro para personalizar com segurança. Headless. CMS que só serve conteúdo via API. Hook. Ponto de extensão (action/filter). Plugin. Extensão de funcionalidade. Custom Post Type. Tipo de conteúdo personalizado. WP-CLI. Interface de linha de comandos do WordPress.

C · Recursos