feat: sync all plugins, skills, agents updates
New plugins: core-tools New skills: auto-expense, ticket-triage, design, security-check, aiktop-tasks, daily-digest, imap-triage, index-update, mindmap, notebooklm, proc-creator, tasks-overview, validate-component, perfex-module, report, calendar-manager New agents: design-critic, design-generator, design-lead, design-prompt-architect, design-researcher, compliance-auditor, metabase-analyst, gitea-integration-specialist Updated: all plugin configs, knowledge datasets, existing skills Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
295
wordpress/skills/rank-math/SKILL.md
Normal file
295
wordpress/skills/rank-math/SKILL.md
Normal file
@@ -0,0 +1,295 @@
|
||||
---
|
||||
name: rank-math
|
||||
description: This skill should be used when the user asks to "optimizar SEO wordpress",
|
||||
"rank math wp-cli", "configurar rank math", "audit rank math", "update meta SEO",
|
||||
"schema markup wordpress", "redirects rank math", "sitemap wordpress", "bulk SEO update",
|
||||
"rank math CWP", "titles meta descriptions wp-cli", "configurar sitemap wordpress",
|
||||
"noindex wordpress", "rank math robots". Manages Rank Math SEO plugin via WP-CLI
|
||||
on CWP servers.
|
||||
author: Descomplicar® Crescimento Digital
|
||||
version: 1.0.0
|
||||
quality_score: 80
|
||||
user_invocable: true
|
||||
---
|
||||
|
||||
# /rank-math - Gestão Rank Math SEO via WP-CLI
|
||||
|
||||
Operações de SEO WordPress via WP-CLI no servidor CWP (server.descomplicar.pt). Cobre auditoria, configuração em massa, schema markup, redirects e sitemap.
|
||||
|
||||
**Manual completo:** `Hub/06-Operacoes/Documentacao/Manuais/Rank-Math-WP-CLI-Manual-Definitivo.md`
|
||||
**Quick Reference:** `Hub/06-Operacoes/Documentacao/Quick-Reference/QR-RankMath-WP-CLI.md`
|
||||
**NotebookLM:** [WordPress Config CLI](https://notebooklm.google.com/notebook/fb2f26bd-8cb0-4d4c-bafc-4f1ebb51c51d)
|
||||
|
||||
---
|
||||
|
||||
## Uso
|
||||
|
||||
```
|
||||
/rank-math audit https://site.pt
|
||||
/rank-math update-meta /home/USER/public_html
|
||||
/rank-math sitemap /home/USER/public_html
|
||||
/rank-math redirects /home/USER/public_html
|
||||
/rank-math schema post ID /home/USER/public_html
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Contexto CWP — Sempre Obrigatório
|
||||
|
||||
**PHP 8.3 no CWP:**
|
||||
```bash
|
||||
# Formato base
|
||||
/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp <comando> --allow-root --path=/home/USER/public_html
|
||||
|
||||
# Alias ~/.bashrc (se configurado)
|
||||
wp83 <comando> --allow-root --path=/home/USER/public_html
|
||||
```
|
||||
|
||||
**Acesso via MCP SSH:**
|
||||
```
|
||||
servidor: server.descomplicar.pt (176.9.3.158)
|
||||
porta: 9443 | user: root
|
||||
```
|
||||
|
||||
**Único comando nativo Rank Math:**
|
||||
```bash
|
||||
wp rankmath sitemap generate --allow-root --path=/home/USER/public_html
|
||||
```
|
||||
Tudo o resto usa `wp post meta`, `wp option patch`, `wp eval` ou `wp db query`.
|
||||
|
||||
---
|
||||
|
||||
## Workflow: Auditoria SEO (/rank-math audit)
|
||||
|
||||
### Passo 1 — Diagnóstico rápido
|
||||
|
||||
```bash
|
||||
PATH=/home/USER/public_html
|
||||
|
||||
# Posts sem título SEO
|
||||
wp db query "SELECT p.ID, p.post_title FROM wp_posts p
|
||||
LEFT JOIN wp_postmeta pm ON p.ID=pm.post_id AND pm.meta_key='rank_math_title'
|
||||
WHERE p.post_type='post' AND p.post_status='publish'
|
||||
AND (pm.meta_value IS NULL OR pm.meta_value='');" --allow-root --path=$PATH
|
||||
|
||||
# Posts sem descrição SEO
|
||||
wp db query "SELECT p.ID, p.post_title FROM wp_posts p
|
||||
LEFT JOIN wp_postmeta pm ON p.ID=pm.post_id AND pm.meta_key='rank_math_description'
|
||||
WHERE p.post_type='post' AND p.post_status='publish'
|
||||
AND (pm.meta_value IS NULL OR pm.meta_value='');" --allow-root --path=$PATH
|
||||
|
||||
# Top 404s (últimos 30 dias)
|
||||
wp db query "SELECT uri, SUM(times_accessed) as total FROM wp_rank_math_404_logs
|
||||
GROUP BY uri ORDER BY total DESC LIMIT 20;" --allow-root --path=$PATH
|
||||
|
||||
# Tamanho options (detetar bloat WooCommerce)
|
||||
wp db query "SELECT option_name, LENGTH(option_value) as bytes FROM wp_options
|
||||
WHERE option_name LIKE 'rank%' AND autoload='yes' ORDER BY bytes DESC;" --allow-root --path=$PATH
|
||||
```
|
||||
|
||||
### Passo 2 — Estado módulos
|
||||
|
||||
```bash
|
||||
wp option pluck rank_math_modules --allow-root --path=$PATH
|
||||
wp option pluck rank-math-options-general strip_category_base --allow-root --path=$PATH
|
||||
wp option pluck rank-math-options-titles title_separator --allow-root --path=$PATH
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Workflow: Actualizar Meta SEO (/rank-math update-meta)
|
||||
|
||||
### Meta key individual
|
||||
|
||||
```bash
|
||||
# Título SEO
|
||||
wp post meta update ID rank_math_title "%title% %sep% %sitename%" --allow-root --path=$PATH
|
||||
|
||||
# Descrição SEO (<160 chars)
|
||||
wp post meta update ID rank_math_description "Texto conciso da página." --allow-root --path=$PATH
|
||||
|
||||
# Focus keyword
|
||||
wp post meta update ID rank_math_focus_keyword "keyword1,keyword2" --allow-root --path=$PATH
|
||||
|
||||
# Robots (ARRAY JSON — obrigatório --format=json)
|
||||
wp post meta update ID rank_math_robots '["noindex"]' --format=json --allow-root --path=$PATH
|
||||
|
||||
# Canonical URL
|
||||
wp post meta update ID rank_math_canonical_url "https://site.pt/url/" --allow-root --path=$PATH
|
||||
|
||||
# Pillar content
|
||||
wp post meta update ID rank_math_pillar_content "on" --allow-root --path=$PATH
|
||||
```
|
||||
|
||||
### Bulk update (wp eval)
|
||||
|
||||
```bash
|
||||
# Aplicar título padrão a todos os posts sem título
|
||||
wp eval '
|
||||
$posts = get_posts(["numberposts"=>-1,"post_status"=>"publish"]);
|
||||
foreach ($posts as $p) {
|
||||
if (!get_post_meta($p->ID, "rank_math_title", true)) {
|
||||
update_post_meta($p->ID, "rank_math_title", "%title% %sep% %sitename%");
|
||||
}
|
||||
}
|
||||
echo count($posts)." posts processados\n";
|
||||
' --allow-root --path=$PATH
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Workflow: Options Globais (/rank-math options)
|
||||
|
||||
**Regra crítica:** SEMPRE usar `wp option patch`, NUNCA `wp option update` em options serializadas.
|
||||
|
||||
```bash
|
||||
# Separador de título
|
||||
wp option patch update rank-math-options-titles title_separator "-" --allow-root --path=$PATH
|
||||
|
||||
# Remover base de categoria do URL
|
||||
wp option patch update rank-math-options-general strip_category_base "on" --allow-root --path=$PATH
|
||||
|
||||
# Verificar sub-key
|
||||
wp option pluck rank-math-options-titles title_separator --allow-root --path=$PATH
|
||||
|
||||
# LER option completa (diagnóstico)
|
||||
wp option get rank-math-options-general --format=json --allow-root --path=$PATH
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Workflow: Schema Markup (/rank-math schema)
|
||||
|
||||
Schema é armazenado como array PHP em `rank_math_schema_{Type}`. Usar `wp eval` (não JSON directo).
|
||||
|
||||
```bash
|
||||
# Criar schema Article num post
|
||||
wp eval '
|
||||
update_post_meta(ID, "rank_math_schema_Article", [
|
||||
"metadata" => ["title"=>"Article","type"=>"custom","shortcode"=>"s-".uniqid(),"isPrimary"=>"1"],
|
||||
"@type"=>"Article",
|
||||
"headline"=>"%seo_title%",
|
||||
"description"=>"%seo_description%",
|
||||
"author"=>["@type"=>"Person","name"=>"%name%"],
|
||||
"datePublished"=>"%date(Y-m-dTH:i:sP)%",
|
||||
"dateModified"=>"%modified(Y-m-dTH:i:sP)%"
|
||||
]);
|
||||
echo "Schema criado\n";
|
||||
' --user=1 --allow-root --path=$PATH
|
||||
|
||||
# Criar schema FAQ
|
||||
wp eval '
|
||||
update_post_meta(ID, "rank_math_schema_FAQPage", [
|
||||
"metadata" => ["title"=>"FAQ","type"=>"custom","shortcode"=>"s-".uniqid(),"isPrimary"=>"1"],
|
||||
"@type"=>"FAQPage",
|
||||
"mainEntity"=>[
|
||||
["@type"=>"Question","name"=>"Pergunta 1","acceptedAnswer"=>["@type"=>"Answer","text"=>"Resposta 1"]],
|
||||
["@type"=>"Question","name"=>"Pergunta 2","acceptedAnswer"=>["@type"=>"Answer","text"=>"Resposta 2"]]
|
||||
]
|
||||
]);
|
||||
echo "FAQ Schema criado\n";
|
||||
' --user=1 --allow-root --path=$PATH
|
||||
|
||||
# Apagar schema corrompido
|
||||
wp post meta delete ID rank_math_schema_Article --allow-root --path=$PATH
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Workflow: Redirects (/rank-math redirects)
|
||||
|
||||
```bash
|
||||
# Criar redirect 301
|
||||
wp eval '
|
||||
\RankMath\Redirections\DB::add([
|
||||
"id"=>"",
|
||||
"sources"=>[["pattern"=>"/url-antiga/","comparison"=>"exact"]],
|
||||
"url_to"=>"/url-nova/",
|
||||
"header_code"=>301,
|
||||
"status"=>"active",
|
||||
]);
|
||||
echo "Redirect criado\n";
|
||||
' --allow-root --path=$PATH
|
||||
|
||||
# Redirect com wildcard
|
||||
wp eval '
|
||||
\RankMath\Redirections\DB::add([
|
||||
"id"=>"",
|
||||
"sources"=>[["pattern"=>"/blog/","comparison"=>"contain"]],
|
||||
"url_to"=>"/artigos/",
|
||||
"header_code"=>301,
|
||||
"status"=>"active",
|
||||
]);
|
||||
echo "Redirect wildcard criado\n";
|
||||
' --allow-root --path=$PATH
|
||||
|
||||
# Apagar redirect por ID
|
||||
wp eval '\RankMath\Redirections\DB::delete(42); echo "Redirect apagado\n";' --allow-root --path=$PATH
|
||||
|
||||
# Limpar logs 404 (após resolver)
|
||||
wp db query "TRUNCATE TABLE wp_rank_math_404_logs;" --allow-root --path=$PATH
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Workflow: Sitemap (/rank-math sitemap)
|
||||
|
||||
```bash
|
||||
# Regenerar sitemap
|
||||
wp rankmath sitemap generate --allow-root --path=$PATH
|
||||
|
||||
# Excluir post-type do sitemap
|
||||
wp option patch update rank-math-options-sitemap pt_attachment_sitemap "off" --allow-root --path=$PATH
|
||||
|
||||
# Verificar setting
|
||||
wp option pluck rank-math-options-sitemap pt_post_sitemap --allow-root --path=$PATH
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Sequência de Cache (Sempre Após Alterações)
|
||||
|
||||
```bash
|
||||
wp cache flush --allow-root --path=$PATH
|
||||
wp transient delete --all --allow-root --path=$PATH
|
||||
wp rewrite flush --allow-root --path=$PATH
|
||||
wp rankmath sitemap generate --allow-root --path=$PATH
|
||||
```
|
||||
|
||||
> Alterações via `wp db query` não invalidam Redis/Memcached. Sempre executar `wp cache flush`.
|
||||
|
||||
---
|
||||
|
||||
## Gotchas Críticos
|
||||
|
||||
| Problema | Causa | Solução |
|
||||
|----------|-------|---------|
|
||||
| Robots não aplicam | Injectado como string, não array | `'["noindex"]' --format=json` |
|
||||
| Options corrompidas | `wp option update` em option serializada | Sempre `wp option patch` |
|
||||
| Alteração não visível | Object cache (Redis) em memória | `wp cache flush` |
|
||||
| Schema quebra editor | JSON inválido em `rank_math_schema_*` | `wp post meta delete ID rank_math_schema_*` |
|
||||
| Sitemap 404 no Nginx | Faltam rewrite rules | Adicionar regras ao server block |
|
||||
|
||||
---
|
||||
|
||||
## Variáveis Dinâmicas Frequentes
|
||||
|
||||
`%title%` · `%sitename%` · `%sep%` · `%excerpt%` · `%category%` · `%currentyear%` · `%seo_title%` · `%seo_description%` · `%post_thumbnail%` · `%url%` · `%name%`
|
||||
|
||||
---
|
||||
|
||||
## Recursos Adicionais
|
||||
|
||||
### Referências
|
||||
|
||||
- **`references/commands.md`** — Referência completa de todos os comandos, meta keys, options e módulos
|
||||
|
||||
### Documentação Hub
|
||||
|
||||
- **Manual:** `Hub/06-Operacoes/Documentacao/Manuais/Rank-Math-WP-CLI-Manual-Definitivo.md` (17 secções)
|
||||
- **QR:** `Hub/06-Operacoes/Documentacao/Quick-Reference/QR-RankMath-WP-CLI.md`
|
||||
- **NotebookLM:** [WordPress Config CLI](https://notebooklm.google.com/notebook/fb2f26bd-8cb0-4d4c-bafc-4f1ebb51c51d) (4 fontes)
|
||||
|
||||
---
|
||||
|
||||
*Rank Math SEO via WP-CLI | Descomplicar® | v1.0.0 | 18-02-2026*
|
||||
379
wordpress/skills/rank-math/references/commands.md
Normal file
379
wordpress/skills/rank-math/references/commands.md
Normal file
@@ -0,0 +1,379 @@
|
||||
# Rank Math WP-CLI — Referência Completa de Comandos
|
||||
|
||||
**Manual Hub:** `06-Operacoes/Documentacao/Manuais/Rank-Math-WP-CLI-Manual-Definitivo.md`
|
||||
|
||||
---
|
||||
|
||||
## Arquitectura de Dados
|
||||
|
||||
### Tabelas WordPress Standard
|
||||
|
||||
| Tabela | Dados Rank Math |
|
||||
|--------|-----------------|
|
||||
| `wp_postmeta` | SEO por post: título, descrição, robots, schema, keywords |
|
||||
| `wp_termmeta` | SEO por taxonomia (categories, tags) |
|
||||
| `wp_usermeta` | SEO de páginas author archive |
|
||||
| `wp_options` | Configurações globais do plugin |
|
||||
|
||||
### Tabelas Custom Rank Math
|
||||
|
||||
| Tabela | Conteúdo |
|
||||
|--------|---------|
|
||||
| `wp_rank_math_redirections` | Regras de redirect (301, 302, 410, etc.) |
|
||||
| `wp_rank_math_redirections_cache` | Cache das regras |
|
||||
| `wp_rank_math_404_logs` | Log de 404s com contadores |
|
||||
| `wp_rank_math_analytics_objects` | Analytics (PRO) |
|
||||
| `wp_rank_math_analytics_ga` | Google Analytics (PRO) |
|
||||
| `wp_rank_math_analytics_gsc` | Search Console (PRO) |
|
||||
|
||||
---
|
||||
|
||||
## Meta Keys Completas (wp_postmeta)
|
||||
|
||||
### SEO Básico
|
||||
|
||||
| Meta Key | Tipo | Exemplo |
|
||||
|----------|------|---------|
|
||||
| `rank_math_title` | string | `%title% %sep% %sitename%` |
|
||||
| `rank_math_description` | string | Máx 160 chars |
|
||||
| `rank_math_focus_keyword` | string CSV | `kw1,kw2,kw3` |
|
||||
| `rank_math_pillar_content` | string | `on` / `off` |
|
||||
| `rank_math_canonical_url` | string URL | `https://site.pt/url/` |
|
||||
| `rank_math_seo_score` | int | 0-100 (calculado no editor) |
|
||||
|
||||
### Robots e Indexação
|
||||
|
||||
| Meta Key | Tipo | Valores |
|
||||
|----------|------|---------|
|
||||
| `rank_math_robots` | **array JSON** | `["noindex"]`, `["nofollow"]`, `["noindex","nofollow"]` |
|
||||
|
||||
```bash
|
||||
# CORRECTO
|
||||
wp post meta update ID rank_math_robots '["noindex"]' --format=json --allow-root
|
||||
|
||||
# ERRADO (string, não aplicará)
|
||||
wp post meta update ID rank_math_robots "noindex" --allow-root
|
||||
```
|
||||
|
||||
### Open Graph / Social
|
||||
|
||||
| Meta Key | Tipo | Notas |
|
||||
|----------|------|-------|
|
||||
| `rank_math_facebook_image` | string URL | Imagem OG |
|
||||
| `rank_math_facebook_title` | string | Título Facebook |
|
||||
| `rank_math_facebook_description` | string | Descrição Facebook |
|
||||
| `rank_math_twitter_card_type` | string | `summary_large_image` |
|
||||
| `rank_math_twitter_title` | string | |
|
||||
| `rank_math_twitter_description` | string | |
|
||||
| `rank_math_twitter_image` | string URL | |
|
||||
|
||||
### Schema
|
||||
|
||||
| Meta Key | Tipo | Notas |
|
||||
|----------|------|-------|
|
||||
| `rank_math_schema_Article` | serialized PHP array | `wp eval` obrigatório |
|
||||
| `rank_math_schema_FAQPage` | serialized PHP array | |
|
||||
| `rank_math_schema_HowTo` | serialized PHP array | |
|
||||
| `rank_math_schema_Product` | serialized PHP array | WooCommerce |
|
||||
| `rank_math_schema_Recipe` | serialized PHP array | |
|
||||
| `rank_math_schema_Review` | serialized PHP array | |
|
||||
| `rank_math_schema_Event` | serialized PHP array | |
|
||||
| `rank_math_schema_LocalBusiness` | serialized PHP array | |
|
||||
| `rank_math_schema_VideoObject` | serialized PHP array | |
|
||||
|
||||
### WooCommerce
|
||||
|
||||
| Meta Key | Tipo | Notas |
|
||||
|----------|------|-------|
|
||||
| `rank_math_primary_category` | string (Term ID) | `"15"` |
|
||||
| `rank_math_schema_Product` | serialized PHP array | Produto WC |
|
||||
|
||||
---
|
||||
|
||||
## Options Globais (wp_options)
|
||||
|
||||
### Options Principais
|
||||
|
||||
| Option Name | Tipo | Conteúdo |
|
||||
|-------------|------|---------|
|
||||
| `rank-math-options-general` | serialized array | Config geral |
|
||||
| `rank-math-options-titles` | serialized array | Títulos e meta por post-type |
|
||||
| `rank-math-options-sitemap` | serialized array | Configuração sitemap |
|
||||
| `rank_math_modules` | serialized array | Módulos activos/inactivos |
|
||||
| `rank_math_schema_types` | serialized array | Tipos schema habilitados |
|
||||
|
||||
### Sub-keys rank-math-options-general
|
||||
|
||||
```bash
|
||||
wp option pluck rank-math-options-general strip_category_base # on/off
|
||||
wp option pluck rank-math-options-general breadcrumbs # on/off
|
||||
wp option pluck rank-math-options-general knowledgegraph_type # person/company
|
||||
wp option pluck rank-math-options-general url # URL empresa
|
||||
wp option pluck rank-math-options-general name # Nome empresa/pessoa
|
||||
```
|
||||
|
||||
### Sub-keys rank-math-options-titles
|
||||
|
||||
```bash
|
||||
wp option pluck rank-math-options-titles title_separator # - / | • …
|
||||
wp option pluck rank-math-options-titles homepage_title # Título homepage
|
||||
wp option pluck rank-math-options-titles homepage_description # Desc homepage
|
||||
wp option pluck rank-math-options-titles pt_post_title # Título padrão posts
|
||||
wp option pluck rank-math-options-titles pt_page_title # Título padrão pages
|
||||
wp option pluck rank-math-options-titles pt_product_title # Título padrão products
|
||||
```
|
||||
|
||||
### Sub-keys rank-math-options-sitemap
|
||||
|
||||
```bash
|
||||
wp option pluck rank-math-options-sitemap items_per_page # Default: 200
|
||||
wp option pluck rank-math-options-sitemap pt_post_sitemap # on/off
|
||||
wp option pluck rank-math-options-sitemap pt_page_sitemap # on/off
|
||||
wp option pluck rank-math-options-sitemap pt_product_sitemap # on/off
|
||||
wp option pluck rank-math-options-sitemap pt_attachment_sitemap # on/off (default: off)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Módulos Rank Math
|
||||
|
||||
```bash
|
||||
# Ver todos os módulos
|
||||
wp option get rank_math_modules --format=json --allow-root
|
||||
|
||||
# Activar módulo
|
||||
wp option patch update rank_math_modules MODULE_NAME "1" --allow-root
|
||||
|
||||
# Desactivar módulo
|
||||
wp option patch update rank_math_modules MODULE_NAME "0" --allow-root
|
||||
```
|
||||
|
||||
| Módulo | Slug | Função |
|
||||
|--------|------|--------|
|
||||
| SEO Analysis | `seo-analysis` | Score SEO no editor |
|
||||
| Link Counter | `link-counter` | Contagem links internos/externos |
|
||||
| Redirections | `redirections` | Sistema de redirects |
|
||||
| 404 Monitor | `404-monitor` | Log de 404s |
|
||||
| Schema | `rich-snippet` | Schema markup |
|
||||
| Sitemap | `sitemap` | XML Sitemap |
|
||||
| Instant Indexing | `instant-indexing` | Google Indexing API (PRO) |
|
||||
| Local SEO | `local-seo` | Schema LocalBusiness |
|
||||
| WooCommerce | `woocommerce` | SEO WooCommerce |
|
||||
|
||||
---
|
||||
|
||||
## Leitura de Meta
|
||||
|
||||
```bash
|
||||
# Todos os meta do post
|
||||
wp post meta list 42 --format=table --allow-root | grep rank_math
|
||||
|
||||
# Meta específico
|
||||
wp post meta get 42 rank_math_title --allow-root
|
||||
wp post meta get 42 rank_math_description --allow-root
|
||||
wp post meta get 42 rank_math_robots --allow-root
|
||||
|
||||
# Meta de term
|
||||
wp term meta get 15 rank_math_title --allow-root
|
||||
wp term meta get 15 rank_math_description --allow-root
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Operações em Massa
|
||||
|
||||
### Script de auditoria completo
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
PATH_WP="/home/USER/public_html"
|
||||
WP="/opt/alt/php-fpm83/usr/bin/php /usr/local/bin/wp --allow-root --path=$PATH_WP"
|
||||
|
||||
echo "=== AUDITORIA RANK MATH SEO ==="
|
||||
echo "Site: $PATH_WP"
|
||||
echo "Data: $(date)"
|
||||
|
||||
echo -e "\n--- Posts sem título SEO ---"
|
||||
$WP db query "SELECT p.ID, LEFT(p.post_title,50) as titulo FROM wp_posts p
|
||||
LEFT JOIN wp_postmeta pm ON p.ID=pm.post_id AND pm.meta_key='rank_math_title'
|
||||
WHERE p.post_type='post' AND p.post_status='publish'
|
||||
AND (pm.meta_value IS NULL OR pm.meta_value='')
|
||||
LIMIT 20;"
|
||||
|
||||
echo -e "\n--- Posts sem descrição SEO ---"
|
||||
$WP db query "SELECT p.ID, LEFT(p.post_title,50) as titulo FROM wp_posts p
|
||||
LEFT JOIN wp_postmeta pm ON p.ID=pm.post_id AND pm.meta_key='rank_math_description'
|
||||
WHERE p.post_type='post' AND p.post_status='publish'
|
||||
AND (pm.meta_value IS NULL OR pm.meta_value='')
|
||||
LIMIT 20;"
|
||||
|
||||
echo -e "\n--- Top 10 404s ---"
|
||||
$WP db query "SELECT uri, SUM(times_accessed) as total FROM wp_rank_math_404_logs
|
||||
GROUP BY uri ORDER BY total DESC LIMIT 10;"
|
||||
|
||||
echo -e "\n--- Módulos activos ---"
|
||||
$WP option get rank_math_modules --format=json
|
||||
|
||||
echo -e "\n--- Tamanho options ---"
|
||||
$WP db query "SELECT option_name, LENGTH(option_value) as bytes FROM wp_options
|
||||
WHERE option_name LIKE 'rank%' AND autoload='yes' ORDER BY bytes DESC;"
|
||||
|
||||
echo "=== FIM AUDITORIA ==="
|
||||
```
|
||||
|
||||
### Bulk: Aplicar título padrão a posts sem título
|
||||
|
||||
```bash
|
||||
wp eval '
|
||||
$posts = get_posts(["post_type"=>"post","numberposts"=>-1,"post_status"=>"publish"]);
|
||||
$updated = 0;
|
||||
foreach ($posts as $p) {
|
||||
if (!get_post_meta($p->ID, "rank_math_title", true)) {
|
||||
update_post_meta($p->ID, "rank_math_title", "%title% %sep% %sitename%");
|
||||
$updated++;
|
||||
}
|
||||
}
|
||||
echo "$updated posts actualizados\n";
|
||||
' --allow-root --path=$PATH_WP
|
||||
```
|
||||
|
||||
### Bulk: Aplicar descrição a partir do excerpt
|
||||
|
||||
```bash
|
||||
wp eval '
|
||||
$posts = get_posts(["post_type"=>"post","numberposts"=>-1,"post_status"=>"publish"]);
|
||||
$updated = 0;
|
||||
foreach ($posts as $p) {
|
||||
if (!get_post_meta($p->ID, "rank_math_description", true) && $p->post_excerpt) {
|
||||
$desc = wp_trim_words($p->post_excerpt, 20, "...");
|
||||
update_post_meta($p->ID, "rank_math_description", $desc);
|
||||
$updated++;
|
||||
}
|
||||
}
|
||||
echo "$updated posts actualizados\n";
|
||||
' --allow-root --path=$PATH_WP
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Schema — Exemplos Completos
|
||||
|
||||
### Article (blog post)
|
||||
|
||||
```bash
|
||||
wp eval '
|
||||
$post_id = ID;
|
||||
update_post_meta($post_id, "rank_math_schema_Article", [
|
||||
"metadata" => [
|
||||
"title"=>"Article",
|
||||
"type"=>"custom",
|
||||
"shortcode"=>"s-".uniqid(),
|
||||
"isPrimary"=>"1"
|
||||
],
|
||||
"@type"=>"Article",
|
||||
"headline"=>"%seo_title%",
|
||||
"description"=>"%seo_description%",
|
||||
"url"=>"%url%",
|
||||
"author"=>["@type"=>"Person","name"=>"%name%"],
|
||||
"publisher"=>["@type"=>"Organization","name"=>"%sitename%","logo"=>""],
|
||||
"datePublished"=>"%date(Y-m-dTH:i:sP)%",
|
||||
"dateModified"=>"%modified(Y-m-dTH:i:sP)%",
|
||||
"image"=>"%post_thumbnail%"
|
||||
]);
|
||||
echo "Article schema criado no post $post_id\n";
|
||||
' --user=1 --allow-root --path=$PATH_WP
|
||||
```
|
||||
|
||||
### LocalBusiness (página contacto)
|
||||
|
||||
```bash
|
||||
wp eval '
|
||||
update_post_meta(ID, "rank_math_schema_LocalBusiness", [
|
||||
"metadata" => ["title"=>"LocalBusiness","type"=>"custom","shortcode"=>"s-".uniqid(),"isPrimary"=>"1"],
|
||||
"@type"=>"LocalBusiness",
|
||||
"name"=>"Nome Empresa",
|
||||
"description"=>"%seo_description%",
|
||||
"url"=>"%url%",
|
||||
"email"=>"email@empresa.pt",
|
||||
"telephone"=>"+351 XXX XXX XXX",
|
||||
"address"=>["@type"=>"PostalAddress","streetAddress"=>"Rua X","addressLocality"=>"Cidade","postalCode"=>"XXXX-XXX","addressCountry"=>"PT"],
|
||||
"geo"=>["@type"=>"GeoCoordinates","latitude"=>"38.7","longitude"=>"-9.1"],
|
||||
"openingHoursSpecification"=>[
|
||||
["@type"=>"OpeningHoursSpecification","dayOfWeek"=>["Monday","Tuesday","Wednesday","Thursday","Friday"],"opens"=>"09:00","closes"=>"18:00"]
|
||||
],
|
||||
"image"=>"%post_thumbnail%"
|
||||
]);
|
||||
echo "LocalBusiness schema criado\n";
|
||||
' --user=1 --allow-root --path=$PATH_WP
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Instant Indexing (Google Indexing API - PRO)
|
||||
|
||||
```bash
|
||||
# Submeter URL individual
|
||||
wp eval '\RankMath\Instant_Indexing\Api::submit("https://site.pt/url/", "URL_UPDATED"); echo "OK\n";' --allow-root --path=$PATH_WP
|
||||
|
||||
# Verificar estado da API
|
||||
wp option pluck rank-math-options-instant-indexing bing_api_key --allow-root --path=$PATH_WP
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Redirects — Referência Completa
|
||||
|
||||
### Tipos de Comparação
|
||||
|
||||
| comparison | Comportamento |
|
||||
|-----------|---------------|
|
||||
| `exact` | Match exacto do URL |
|
||||
| `contains` | URL contém o pattern |
|
||||
| `starts_with` | URL começa com o pattern |
|
||||
| `ends_with` | URL termina com o pattern |
|
||||
| `regex` | Regular expression |
|
||||
|
||||
### Códigos HTTP
|
||||
|
||||
| Código | Tipo | Uso |
|
||||
|--------|------|-----|
|
||||
| 301 | Moved Permanently | Redirect definitivo |
|
||||
| 302 | Found | Redirect temporário |
|
||||
| 307 | Temporary Redirect | Temporário (preserva método HTTP) |
|
||||
| 410 | Gone | Conteúdo removido permanentemente |
|
||||
| 451 | Unavailable For Legal | Removido por razões legais |
|
||||
|
||||
---
|
||||
|
||||
## Tabelas Rank Math — Verificação
|
||||
|
||||
```bash
|
||||
# Ver tabelas custom
|
||||
wp db query "SHOW TABLES LIKE '%rank_math%';" --allow-root --path=$PATH_WP
|
||||
|
||||
# Estrutura tabela redirections
|
||||
wp db query "DESCRIBE wp_rank_math_redirections;" --allow-root --path=$PATH_WP
|
||||
|
||||
# Ver todos os redirects activos
|
||||
wp db query "SELECT id, sources, url_to, header_code FROM wp_rank_math_redirections WHERE status='active';" --allow-root --path=$PATH_WP
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Free vs PRO — Funcionalidades WP-CLI
|
||||
|
||||
| Funcionalidade | Free | PRO | Notas |
|
||||
|---------------|------|-----|-------|
|
||||
| `wp rankmath sitemap generate` | ✅ | ✅ | Único comando nativo |
|
||||
| Meta por post | ✅ | ✅ | `wp post meta` |
|
||||
| Options globais | ✅ | ✅ | `wp option patch` |
|
||||
| Schema markup | ✅ | ✅ | `wp eval` |
|
||||
| Redirections | ✅ | ✅ | `\RankMath\Redirections\DB` |
|
||||
| 404 Monitor | ✅ | ✅ | `wp_rank_math_404_logs` |
|
||||
| Instant Indexing | ❌ | ✅ | `\RankMath\Instant_Indexing\Api` |
|
||||
| Analytics GSC | ❌ | ✅ | Tabelas analytics_gsc |
|
||||
| Analytics GA | ❌ | ✅ | Tabelas analytics_ga |
|
||||
|
||||
---
|
||||
|
||||
*Referência Rank Math WP-CLI | Descomplicar® | v1.0.0 | 18-02-2026*
|
||||
Reference in New Issue
Block a user