__('Menu Principal', 'terradorei'), 'footer' => __('Menu do Rodapé', 'terradorei'), )); // Suporte a widgets add_theme_support('widgets'); add_theme_support('widgets-block-editor'); // Suporte a logo personalizada add_theme_support('custom-logo', array( 'height' => 60, 'width' => 200, 'flex-height' => true, 'flex-width' => true, )); // Suporte a wide alignment no editor add_theme_support('align-wide'); // Suporte a estilos do editor add_theme_support('editor-styles'); add_editor_style('assets/css/editor-style.css'); // Suporte a core block patterns add_theme_support('core-block-patterns'); // Remover estilos padrão da galeria add_filter('use_default_gallery_style', '__return_false'); } endif; add_action('after_setup_theme', 'terradorei_setup'); // Enfileirar scripts e estilos function terradorei_scripts() { // Estilo principal wp_enqueue_style('terradorei-style', get_stylesheet_uri(), array(), TERRADOREI_VERSION); // Google Fonts wp_enqueue_style('terradorei-google-fonts', 'https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap', array(), null); // Font Awesome wp_enqueue_style('terradorei-font-awesome', 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css', array(), '6.4.0'); // Script principal wp_enqueue_script('terradorei-script', TERRADOREI_TEMPLATE_URI . '/assets/js/main.js', array(), TERRADOREI_VERSION, true); // Adiciona dados para scripts wp_localize_script('terradorei-script', 'terradorei_ajax', array( 'ajax_url' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('terradorei_nonce') )); } add_action('wp_enqueue_scripts', 'terradorei_scripts'); /** * Adiciona opções ao Personalizador do WordPress. */ function terradorei_customize_register( $wp_customize ) { // Seção Hero $wp_customize->add_section('terradorei_hero_section', array( 'title' => __('Seção Hero', 'terradorei'), 'description' => __('Opções para a seção Hero na página inicial.', 'terradorei'), 'priority' => 30, )); // Título $wp_customize->add_setting('hero_title', ['default' => __('Notícias Corporativas', 'terradorei'), 'sanitize_callback' => 'sanitize_text_field', 'transport' => 'postMessage']); $wp_customize->add_control('hero_title', ['label' => __('Título', 'terradorei'), 'section' => 'terradorei_hero_section', 'type' => 'text']); // Descrição $wp_customize->add_setting('hero_description', ['default' => __('Mantenha-se atualizado com as últimas notícias e informações da empresa', 'terradorei'), 'sanitize_callback' => 'wp_kses_post', 'transport' => 'postMessage']); $wp_customize->add_control('hero_description', ['label' => __('Descrição', 'terradorei'), 'section' => 'terradorei_hero_section', 'type' => 'textarea']); // Imagem de Fundo $wp_customize->add_setting('hero_background_image', ['default' => '', 'sanitize_callback' => 'esc_url_raw']); $wp_customize->add_control(new WP_Customize_Image_Control($wp_customize, 'hero_background_image', ['label' => __('Imagem de Fundo', 'terradorei'), 'section' => 'terradorei_hero_section'])); // Texto do Botão Primário $wp_customize->add_setting('hero_button_primary_text', ['default' => __('Ver Notícias', 'terradorei'), 'sanitize_callback' => 'sanitize_text_field', 'transport' => 'postMessage']); $wp_customize->add_control('hero_button_primary_text', ['label' => __('Texto do Botão Primário', 'terradorei'), 'section' => 'terradorei_hero_section', 'type' => 'text']); // Link do Botão Primário $wp_customize->add_setting('hero_button_primary_link', ['default' => '#', 'sanitize_callback' => 'esc_url_raw']); $wp_customize->add_control('hero_button_primary_link', ['label' => __('Link do Botão Primário', 'terradorei'), 'section' => 'terradorei_hero_section', 'type' => 'url']); // Texto do Botão Secundário $wp_customize->add_setting('hero_button_secondary_text', ['default' => __('Saiba Mais', 'terradorei'), 'sanitize_callback' => 'sanitize_text_field', 'transport' => 'postMessage']); $wp_customize->add_control('hero_button_secondary_text', ['label' => __('Texto do Botão Secundário', 'terradorei'), 'section' => 'terradorei_hero_section', 'type' => 'text']); // Link do Botão Secundário $wp_customize->add_setting('hero_button_secondary_link', ['default' => '#', 'sanitize_callback' => 'esc_url_raw']); $wp_customize->add_control('hero_button_secondary_link', ['label' => __('Link do Botão Secundário', 'terradorei'), 'section' => 'terradorei_hero_section', 'type' => 'url']); // Habilitar Live Preview $wp_customize->get_setting('hero_title')->transport = 'postMessage'; $wp_customize->get_setting('hero_description')->transport = 'postMessage'; $wp_customize->get_setting('hero_button_primary_text')->transport = 'postMessage'; $wp_customize->get_setting('hero_button_secondary_text')->transport = 'postMessage'; $wp_customize->selective_refresh->add_partial('hero_title', [ 'selector' => '.hero-content h1', 'render_callback' => function() { return get_theme_mod('hero_title'); }, ]); $wp_customize->selective_refresh->add_partial('hero_description', [ 'selector' => '.hero-content p', 'render_callback' => function() { return get_theme_mod('hero_description'); }, ]); } add_action('customize_register', 'terradorei_customize_register'); /** * Enfileira script para o live preview do Customizer. */ function terradorei_customizer_live_preview() { wp_enqueue_script( 'terradorei-customizer', get_template_directory_uri() . '/assets/js/customizer.js', array('jquery', 'customize-preview'), TERRADOREI_VERSION, true ); } add_action('customize_preview_init', 'terradorei_customizer_live_preview'); // Registrar áreas de widgets function terradorei_widgets_init() { register_sidebar(array( 'name' => __('Sidebar Principal', 'terradorei'), 'id' => 'sidebar-1', 'description' => __('Widgets que aparecem na sidebar principal.', 'terradorei'), 'before_widget' => '
', 'after_widget' => '
', 'before_title' => '

', 'after_title' => '

', )); register_sidebar(array( 'name' => __('Rodapé - Coluna 1', 'terradorei'), 'id' => 'footer-1', 'description' => __('Widgets que aparecem na primeira coluna do rodapé.', 'terradorei'), 'before_widget' => '
', 'after_widget' => '
', 'before_title' => '

', 'after_title' => '

', )); register_sidebar(array( 'name' => __('Rodapé - Coluna 2', 'terradorei'), 'id' => 'footer-2', 'description' => __('Widgets que aparecem na segunda coluna do rodapé.', 'terradorei'), 'before_widget' => '
', 'after_widget' => '
', 'before_title' => '

', 'after_title' => '

', )); register_sidebar(array( 'name' => __('Rodapé - Coluna 3', 'terradorei'), 'id' => 'footer-3', 'description' => __('Widgets que aparecem na terceira coluna do rodapé.', 'terradorei'), 'before_widget' => '
', 'after_widget' => '
', 'before_title' => '

', 'after_title' => '

', )); } add_action('widgets_init', 'terradorei_widgets_init'); // Funções personalizadas function terradorei_post_meta() { $reading_time = terradorei_reading_time(); echo '
'; echo ' ' . get_the_date() . ''; echo ' ' . esc_html($reading_time) . ''; echo '
'; } function terradorei_reading_time() { $content = get_post_field('post_content', get_the_ID()); $word_count = str_word_count(strip_tags($content)); $reading_time = ceil($word_count / 200); // Média de 200 palavras por minuto if ($reading_time < 1) { return __('Menos de 1 min de leitura', 'terradorei'); } $time_string = sprintf(_n('%s min de leitura', '%s min de leitura', $reading_time, 'terradorei'), $reading_time); return $time_string; } // Função para botões de compartilhamento social function terradorei_social_share() { $post_url = urlencode(get_permalink()); $post_title = urlencode(get_the_title()); $social_links = [ 'facebook' => 'https://www.facebook.com/sharer/sharer.php?u=' . $post_url, 'twitter' => 'https://twitter.com/intent/tweet?text=' . $post_title . '&url=' . $post_url, 'linkedin' => 'https://www.linkedin.com/shareArticle?mini=true&url=' . $post_url . '&title=' . $post_title, 'whatsapp' => 'https://api.whatsapp.com/send?text=' . $post_title . ' ' . $post_url, 'instagram' => 'https://www.instagram.com', // O Instagram não tem URL de compartilhamento direto. Este link pode ser alterado para o perfil da empresa. ]; echo '
'; echo '' . esc_html__('Compartilhar:', 'terradorei') . ''; echo '
'; foreach ($social_links as $platform => $link) { echo ''; } // Botão de Imprimir echo ''; echo '
'; } // Shortcodes personalizados function terradorei_calendar_shortcode($atts) { $atts = shortcode_atts(array( 'show_title' => true, 'show_navigation' => true ), $atts); ob_start(); ?>

5, 'show_title' => true ), $atts); ob_start(); ?>

is_main_query()) { if ($query->is_home() || $query->is_front_page()) { $query->set('posts_per_page', 6); } } } add_action('pre_get_posts', 'terradorei_optimize_queries'); // Adicionar suporte a WebP function terradorei_webp_support($mimes) { $mimes['webp'] = 'image/webp'; return $mimes; } add_filter('mime_types', 'terradorei_webp_support'); // Customizar a pesquisa function terradorei_search_filter($query) { if ($query->is_search && !is_admin()) { $query->set('post_type', 'post'); } return $query; } add_filter('pre_get_posts', 'terradorei_search_filter'); // Adicionar suporte a lazy loading para imagens function terradorei_lazy_load_images($content) { if (is_feed() || is_admin()) { return $content; } $content = preg_replace_callback('/]+/', function($matches) { $img = $matches[0]; // Skip if already has lazy loading if (strpos($img, 'loading=') !== false) { return $img; } // Add loading="lazy" attribute $img = preg_replace('//i', '', $img); return $img; }, $content); return $content; } add_filter('the_content', 'terradorei_lazy_load_images'); // Adicionar schema markup para melhor SEO function terradorei_schema_markup() { if (is_single()) { $schema = array( '@context' => 'https://schema.org', '@type' => 'NewsArticle', 'headline' => get_the_title(), 'datePublished' => get_the_date('c'), 'dateModified' => get_the_modified_date('c'), 'author' => array( '@type' => 'Person', 'name' => get_the_author() ), 'publisher' => array( '@type' => 'Organization', 'name' => get_bloginfo('name'), 'logo' => array( '@type' => 'ImageObject', 'url' => wp_get_attachment_url(get_theme_mod('custom_logo')) ) ) ); if (has_post_thumbnail()) { $schema['image'] = array( '@type' => 'ImageObject', 'url' => get_the_post_thumbnail_url(), 'width' => 1200, 'height' => 630 ); } echo ''; } } add_action('wp_head', 'terradorei_schema_markup'); /** * Custom Post Type para Botões de Acesso Rápido. */ function terradorei_register_quick_access_cpt() { $labels = array( 'name' => _x( 'Botões de Acesso Rápido', 'Post Type General Name', 'terradorei' ), 'singular_name' => _x( 'Botão de Acesso Rápido', 'Post Type Singular Name', 'terradorei' ), 'menu_name' => __( 'Acesso Rápido', 'terradorei' ), 'name_admin_bar' => __( 'Botão de Acesso Rápido', 'terradorei' ), 'archives' => __( 'Arquivos de Botões', 'terradorei' ), 'attributes' => __( 'Atributos do Botão', 'terradorei' ), 'parent_item_colon' => __( 'Botão Pai:', 'terradorei' ), 'all_items' => __( 'Todos os Botões', 'terradorei' ), 'add_new_item' => __( 'Adicionar Novo Botão', 'terradorei' ), 'add_new' => __( 'Adicionar Novo', 'terradorei' ), 'new_item' => __( 'Novo Botão', 'terradorei' ), 'edit_item' => __( 'Editar Botão', 'terradorei' ), 'update_item' => __( 'Atualizar Botão', 'terradorei' ), 'view_item' => __( 'Ver Botão', 'terradorei' ), 'view_items' => __( 'Ver Botões', 'terradorei' ), 'search_items' => __( 'Procurar Botão', 'terradorei' ), ); $args = array( 'label' => __( 'Botão de Acesso Rápido', 'terradorei' ), 'description' => __( 'Botões para a seção de acesso rápido na home.', 'terradorei' ), 'labels' => $labels, 'supports' => array( 'title', 'editor', 'page-attributes' ), 'hierarchical' => false, 'public' => false, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 20, 'menu_icon' => 'dashicons-screenoptions', 'show_in_admin_bar' => true, 'show_in_nav_menus' => false, 'can_export' => true, 'has_archive' => false, 'exclude_from_search' => true, 'publicly_queryable' => false, 'capability_type' => 'page', ); register_post_type( 'quick_access_button', $args ); } add_action( 'init', 'terradorei_register_quick_access_cpt', 0 ); /** * Meta Box para campos extras dos botões. */ function terradorei_quick_access_meta_box() { add_meta_box( 'quick_access_details', __( 'Detalhes do Botão', 'terradorei' ), 'terradorei_quick_access_meta_box_callback', 'quick_access_button' ); } add_action( 'add_meta_boxes', 'terradorei_quick_access_meta_box' ); function terradorei_quick_access_meta_box_callback( $post ) { wp_nonce_field( 'terradorei_save_quick_access_meta', 'terradorei_quick_access_nonce' ); $icon = get_post_meta( $post->ID, '_button_icon', true ); $link = get_post_meta( $post->ID, '_button_link', true ); ?>

Font Awesome' ); ?>

'Início', 'post_content' => 'Esta é a sua página inicial. Edite-a para adicionar seu próprio conteúdo.', 'post_status' => 'publish', 'post_author' => 1, 'post_type' => 'page', 'comment_status' => 'closed', 'ping_status' => 'closed', ) ); } else { $home_page_id = $home_page->ID; } // Verifica se a página 'Blog' já existe $blog_page = get_page_by_title( 'Blog' ); if ( ! $blog_page ) { $blog_page_id = wp_insert_post( array( 'post_title' => 'Blog', 'post_content' => 'Esta página exibirá suas últimas notícias.', 'post_status' => 'publish', 'post_author' => 1, 'post_type' => 'page', 'comment_status' => 'closed', 'ping_status' => 'closed', ) ); } else { $blog_page_id = $blog_page->ID; } // Define as páginas nas configurações de Leitura do WordPress if ( isset( $home_page_id ) && isset( $blog_page_id ) ) { update_option( 'show_on_front', 'page' ); update_option( 'page_on_front', $home_page_id ); update_option( 'page_for_posts', $blog_page_id ); } } add_action( 'after_switch_theme', 'terradorei_setup_default_pages' );