first commit: gustavoo-portfolio theme + gustavoo-portfolio-core plugin

This commit is contained in:
gustavooth
2026-07-23 21:06:39 -03:00
commit aff10f7880
60 changed files with 9778 additions and 0 deletions
@@ -0,0 +1,173 @@
<?php
/**
* Theme setting defaults and reusable portfolio content.
*
* @package Gustavo_Portfolio
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Return default settings without writing options to the database.
*
* @return array<string, mixed>
*/
function gustavoo_portfolio_get_defaults() {
$defaults = array(
'hero_eyebrow' => __( 'Desenvolvimento de ponta a ponta', 'gustavoo-portfolio' ),
'hero_title' => __( 'Transformo ideias em produtos digitais sólidos.', 'gustavoo-portfolio' ),
'hero_description' => __( 'Gustavo, Desenvolvedor Full Stack Sênior. Web, mobile, infraestrutura e automação para tirar projetos do papel e fazê-los crescer.', 'gustavoo-portfolio' ),
'hero_primary_label' => __( 'Ver projetos', 'gustavoo-portfolio' ),
'hero_primary_url' => '#projetos',
'hero_secondary_label' => __( 'Fale comigo', 'gustavoo-portfolio' ),
'hero_secondary_url' => '#contato',
'about_eyebrow' => __( 'Sobre mim', 'gustavoo-portfolio' ),
'about_title' => __( 'Responsabilidade técnica do planejamento à produção.', 'gustavoo-portfolio' ),
'about_text' => __( 'Mais do que escrever código, meu objetivo é garantir que seu projeto saia do papel e funcione exatamente como planejado. Assumo a responsabilidade técnica de ponta a ponta para que você foque no que importa: crescer.', 'gustavoo-portfolio' ),
'about_secondary_text' => __( 'Já participei do desenvolvimento e lançamento de múltiplos projetos digitais, atuando da arquitetura técnica à divulgação e ao crescimento das plataformas. Essa combinação de visão técnica e entendimento de mercado orienta cada entrega.', 'gustavoo-portfolio' ),
'services_eyebrow' => __( 'Como posso ajudar', 'gustavoo-portfolio' ),
'services_title' => __( 'Soluções completas para produtos digitais.', 'gustavoo-portfolio' ),
'services_description' => __( 'Estratégia, código e infraestrutura trabalhando juntos para criar experiências rápidas, seguras e preparadas para evoluir.', 'gustavoo-portfolio' ),
'projects_eyebrow' => __( 'Portfólio', 'gustavoo-portfolio' ),
'projects_title' => __( 'Projetos selecionados', 'gustavoo-portfolio' ),
'projects_text' => __( 'Uma seleção de produtos, experiências e soluções que ajudei a colocar no mundo.', 'gustavoo-portfolio' ),
'projects_limit' => 6,
'blog_eyebrow' => __( 'Blog', 'gustavoo-portfolio' ),
'blog_title' => __( 'Código, produto e bastidores', 'gustavoo-portfolio' ),
'blog_text' => __( 'Análises práticas sobre desenvolvimento, infraestrutura, automação e crescimento de produtos digitais.', 'gustavoo-portfolio' ),
'blog_limit' => 4,
'contact_eyebrow' => __( 'Vamos conversar', 'gustavoo-portfolio' ),
'contact_heading' => __( 'Tem um projeto em mente?', 'gustavoo-portfolio' ),
'contact_text' => __( 'Conte o que você precisa construir ou melhorar. Responderei com os próximos passos para transformar a ideia em uma entrega concreta.', 'gustavoo-portfolio' ),
'contact_form_id' => 0,
'newsletter_eyebrow' => __( 'Newsletter', 'gustavoo-portfolio' ),
'newsletter_heading' => __( 'Ideias úteis, direto na sua caixa de entrada.', 'gustavoo-portfolio' ),
'newsletter_text' => __( 'Receba conteúdos sobre desenvolvimento, produto, infraestrutura e automação. Sem ruído e sem spam.', 'gustavoo-portfolio' ),
'newsletter_form_id' => 0,
'email' => (string) get_option( 'admin_email', '' ),
'whatsapp' => '',
'whatsapp_message' => __( 'Olá! Gostaria de falar sobre um projeto.', 'gustavoo-portfolio' ),
'github_url' => '',
'linkedin_url' => '',
'instagram_url' => '',
'projects_archive_url' => '',
'availability_label' => __( 'Disponível para novos projetos', 'gustavoo-portfolio' ),
);
/**
* Filter theme defaults before saved settings are merged.
*
* @param array<string, mixed> $defaults Default settings.
*/
return apply_filters( 'gustavoo_portfolio_defaults', $defaults );
}
/**
* Return the saved theme settings merged with safe local defaults.
*
* @return array<string, mixed>
*/
function gustavoo_portfolio_get_settings() {
$settings = get_option( 'gustavoo_portfolio_settings', array() );
if ( ! is_array( $settings ) ) {
$settings = array();
}
return wp_parse_args( $settings, gustavoo_portfolio_get_defaults() );
}
/**
* Read one theme setting. A few aliases preserve compatibility with early builds.
*
* @param string $key Setting key.
* @param mixed $fallback Optional fallback.
* @return mixed
*/
function gustavoo_portfolio_get_setting( $key, $fallback = null ) {
$customizer_key = 'gustavoo_portfolio_' . $key;
$customizer_values = get_theme_mods();
if ( is_array( $customizer_values ) && array_key_exists( $customizer_key, $customizer_values ) ) {
return $customizer_values[ $customizer_key ];
}
$settings = gustavoo_portfolio_get_settings();
$aliases = array(
'hero_eyebrow' => array( 'hero_kicker' ),
'hero_description' => array( 'hero_text' ),
'contact_form_id' => array( 'fluent_contact_form_id', 'lead_form_id' ),
'newsletter_form_id' => array( 'fluent_newsletter_form_id', 'fluentcrm_form_id' ),
'contact_heading' => array( 'contact_title' ),
'newsletter_heading' => array( 'newsletter_title' ),
);
if ( array_key_exists( $key, $settings ) && '' !== $settings[ $key ] && null !== $settings[ $key ] ) {
return $settings[ $key ];
}
if ( isset( $aliases[ $key ] ) ) {
foreach ( $aliases[ $key ] as $alias ) {
if ( array_key_exists( $alias, $settings ) && '' !== $settings[ $alias ] && null !== $settings[ $alias ] ) {
return $settings[ $alias ];
}
}
}
if ( null !== $fallback ) {
return $fallback;
}
$defaults = gustavoo_portfolio_get_defaults();
return $defaults[ $key ] ?? '';
}
/**
* Return the service cards used by the front page.
*
* @return array<int, array<string, string>>
*/
function gustavoo_portfolio_get_services() {
$services = array(
array(
'number' => '01',
'title' => __( 'Web, Mobile e E-commerce', 'gustavoo-portfolio' ),
'description' => __( 'Sites institucionais, aplicações para iOS e Android, softwares desktop, lojas e marketplaces personalizados com foco em experiência e conversão.', 'gustavoo-portfolio' ),
),
array(
'number' => '02',
'title' => __( 'WordPress avançado', 'gustavoo-portfolio' ),
'description' => __( 'Temas e plugins sob medida, integrações específicas, recuperação de sites e otimização para Core Web Vitals.', 'gustavoo-portfolio' ),
),
array(
'number' => '03',
'title' => __( 'Infraestrutura e servidores', 'gustavoo-portfolio' ),
'description' => __( 'Ambientes Linux, VPS e servidores dedicados configurados para manter aplicações estáveis, rápidas, seguras e escaláveis.', 'gustavoo-portfolio' ),
),
array(
'number' => '04',
'title' => __( 'Automação e integrações', 'gustavoo-portfolio' ),
'description' => __( 'APIs e fluxos com n8n para conectar sistemas, organizar dados e eliminar tarefas operacionais repetitivas.', 'gustavoo-portfolio' ),
),
array(
'number' => '05',
'title' => __( 'Games e experiências interativas', 'gustavoo-portfolio' ),
'description' => __( 'Jogos 2D e 3D para celulares, computadores e navegadores, incluindo ranking, multiplayer e compras dentro do jogo.', 'gustavoo-portfolio' ),
),
array(
'number' => '06',
'title' => __( 'Divulgação e crescimento', 'gustavoo-portfolio' ),
'description' => __( 'Estratégias de conteúdo, comunidades, parcerias e mídia paga para aproximar produtos digitais do público certo.', 'gustavoo-portfolio' ),
),
);
/**
* Filter the service cards shown on the front page.
*
* @param array<int, array<string, string>> $services Service cards.
*/
return apply_filters( 'gustavoo_portfolio_services', $services );
}