Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
inc
:
theme-options.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php if (!defined('ABSPATH')) exit; function bt_default_options(){ return [ 'site_logo_text' => 'Baristalay', 'primary_color' => '#071d49', 'secondary_color' => '#0d2d66', 'accent_color' => '#d71920', 'light_bg' => '#f5f7fb', 'header_cta_text' => 'İletişim', 'header_cta_link' => '/contact/', 'hero_badge' => 'Baristalay.net', 'hero_title_1' => 'Baristalay ile Güven Veren Dijital Deneyim', 'hero_text_1' => 'Modern görünüm, güçlü içerik yapısı ve mobil uyumlu tasarım ile markanızı daha profesyonel gösterin.', 'hero_button_1' => 'İçeriği Oku', 'hero_link_1' => '#about', 'hero_image_1' => '', 'hero_title_2' => 'Şık, Hızlı ve Yönetilebilir WordPress Tema', 'hero_text_2' => 'Slider, faaliyet alanları, blog listeleme, arama ve gelişmiş tema paneli tek yapıda birleşir.', 'hero_button_2' => 'Faaliyetleri İncele', 'hero_link_2' => '#activities', 'hero_image_2' => '', 'hero_title_3' => 'İçerik Odaklı Premium Blog Deneyimi', 'hero_text_3' => 'Blog yazıları, arama, pagination ve sidebar alanlarıyla kullanıcıyı içerikte daha uzun süre tutan bir yapı sunar.', 'hero_button_3' => 'Tüm Blog Yazıları', 'hero_link_3' => '/blog/', 'hero_image_3' => '', 'about_image' => '', 'about_badge_number' => '2026', 'about_badge_text' => 'Modern ve güvenilir web deneyimi', 'about_title' => 'Baristalay Hakkında', 'about_text' => 'Baristalay.net için hazırlanan bu yapı; kurumsal duruşu, güçlü görsel dili ve okunabilir içerik mimarisini bir araya getirir. Koyu mavi güven hissi verirken kırmızı vurgu rengi aksiyon alanlarını öne çıkarır.', 'about_li_1' => 'Mobil uyumlu, hızlı ve temiz kod yapısı', 'about_li_2' => 'Tema panelinden kontrol edilebilir ana sayfa alanları', 'about_li_3' => 'SEO dostu blog ve içerik şablonları', 'activities_title' => 'Faaliyet Alanları', 'activities_text' => 'Baristalay.net için öne çıkarılabilecek hizmet ve içerik alanları modern kart yapısıyla sunulur.', 'activity_1_icon' => '01', 'activity_1_title' => 'Kurumsal Tanıtım', 'activity_1_text' => 'Markanızı güven veren, düzenli ve profesyonel bir dille anlatan alanlar.', 'activity_2_icon' => '02', 'activity_2_title' => 'İçerik Yönetimi', 'activity_2_text' => 'Blog, haber ve sayfa içeriklerini sade bir WordPress düzeniyle yönetebilirsiniz.', 'activity_3_icon' => '03', 'activity_3_title' => 'Dijital Görünürlük', 'activity_3_text' => 'Arama, kategori, blog ve okunabilir içerik bloklarıyla daha güçlü görünüm.', 'activity_4_icon' => '04', 'activity_4_title' => 'Mobil Deneyim', 'activity_4_text' => 'Hamburger menü, responsive kartlar ve dokunmatik uyumlu butonlar.', 'activity_5_icon' => '05', 'activity_5_title' => 'Performans', 'activity_5_text' => 'Gereksiz eklenti yükü olmadan sade ve hızlı bir tema iskeleti.', 'activity_6_icon' => '06', 'activity_6_title' => 'Tema Paneli', 'activity_6_text' => 'Slider, hakkımızda, faaliyetler, sosyal medya ve footer metinleri panelden yönetilir.', 'blog_title' => 'Son Blog Yazıları', 'blog_text' => 'En yeni içerikler ana sayfada şık kartlarla listelenir. Tüm yazılar /blog/ sayfasında görülebilir.', 'home_post_count' => '6', 'blog_archive_title' => 'Tüm Blog Yazıları', 'blog_archive_text' => 'Baristalay.net üzerindeki tüm güncel içerikleri, kategorileri ve arama sonuçlarını bu alandan takip edebilirsiniz.', 'sidebar_cta_title' => 'Baristalay İçeriklerine Göz At', 'sidebar_cta_text' => 'Yeni yazılar, rehber içerikler ve güncel paylaşımlar için blog arşivini inceleyin.', 'sidebar_cta_button' => 'Tüm Bloglar', 'sidebar_cta_link' => '/blog/', 'footer_text' => 'Baristalay.net; modern, okunabilir ve mobil uyumlu web deneyimi için tasarlanmış premium WordPress yapısıdır.', 'footer_copyright' => '© 2026 Baristalay.net. Tüm hakları saklıdır.', 'contact_email' => 'info@baristalay.net', 'contact_phone' => '', 'contact_address' => '', 'custom_css' => '', ]; } function bt_admin_menu(){ $GLOBALS['bt_theme_options_hook'] = add_menu_page('Baristalay Tema Paneli','Tema Paneli','manage_options','bt-theme-options','bt_options_page','dashicons-admin-customizer',58); } add_action('admin_menu','bt_admin_menu'); function bt_register_settings(){ register_setting('bt_theme_options_group','bt_theme_options','bt_sanitize_options'); } add_action('admin_init','bt_register_settings'); function bt_sanitize_options($input){ $clean=[]; foreach((array)$input as $key=>$value){ if(bt_string_contains($key,'image')) $clean[$key]=esc_url_raw($value); elseif(bt_string_contains($key,'link') || bt_string_contains($key,'social_')) $clean[$key]=esc_url_raw($value); elseif(bt_string_contains($key,'color')) $clean[$key]=sanitize_hex_color($value) ?: ''; elseif($key === 'custom_css') $clean[$key]=wp_strip_all_tags($value); else $clean[$key]=sanitize_textarea_field($value); } return $clean; } function bt_get_option_value($key){ $defaults = bt_default_options(); $opts = get_option('bt_theme_options', []); return $opts[$key] ?? ($defaults[$key] ?? ''); } function bt_field($key,$label,$type='text',$help=''){ $val = bt_get_option_value($key); echo '<div class="bt-admin-field">'; echo '<label for="'.$key.'">'.esc_html($label).'</label>'; if($type==='textarea') echo '<textarea id="'.$key.'" name="bt_theme_options['.$key.']" rows="4">'.esc_textarea($val).'</textarea>'; elseif($type==='number') echo '<input id="'.$key.'" name="bt_theme_options['.$key.']" type="number" min="1" value="'.esc_attr($val).'">'; elseif($type==='color') echo '<input id="'.$key.'" name="bt_theme_options['.$key.']" type="color" value="'.esc_attr($val).'">'; else echo '<input id="'.$key.'" name="bt_theme_options['.$key.']" type="text" value="'.esc_attr($val).'">'; if($help) echo '<small>'.esc_html($help).'</small>'; echo '</div>'; } function bt_media_field($key,$label,$help=''){ $val = bt_get_option_value($key); echo '<div class="bt-admin-field bt-media-field">'; echo '<label for="'.$key.'">'.esc_html($label).'</label>'; echo '<div class="bt-media-row"><input id="'.$key.'" name="bt_theme_options['.$key.']" type="text" value="'.esc_attr($val).'" placeholder="Görsel URL"><button type="button" class="button bt-upload" data-target="'.$key.'">Görsel Seç / Yükle</button><button type="button" class="button bt-clear" data-target="'.$key.'">Temizle</button></div>'; echo '<div class="bt-preview" data-preview="'.$key.'">'.($val ? '<img src="'.esc_url($val).'" alt="">' : '<span>Henüz görsel seçilmedi.</span>').'</div>'; if($help) echo '<small>'.esc_html($help).'</small>'; echo '</div>'; } function bt_section_open($id,$title,$desc=''){ echo '<section class="bt-panel-section" id="'.$id.'"><div class="bt-section-title"><h2>'.esc_html($title).'</h2>'.($desc?'<p>'.esc_html($desc).'</p>':'').'</div><div class="bt-fields">'; } function bt_section_close(){ echo '</div></section>'; } function bt_admin_assets($hook){ $screen_page = isset($_GET['page']) ? sanitize_key(wp_unslash($_GET['page'])) : ''; $saved_hook = isset($GLOBALS['bt_theme_options_hook']) ? $GLOBALS['bt_theme_options_hook'] : 'toplevel_page_bt-theme-options'; // Bazı kurulumlarda admin hook adı farklı dönebildiği için hem hook hem de page kontrolü yapılır. if($hook !== $saved_hook && $screen_page !== 'bt-theme-options') return; wp_enqueue_media(); wp_enqueue_style('bt-admin-options', get_template_directory_uri() . '/assets/css/admin.css', [], bt_asset_version('/assets/css/admin.css')); wp_enqueue_script('bt-admin-options', get_template_directory_uri() . '/assets/js/admin.js', ['jquery'], bt_asset_version('/assets/js/admin.js'), true); } add_action('admin_enqueue_scripts','bt_admin_assets', 20); function bt_options_page(){ ?> <div class="wrap bt-admin-wrap"> <div class="bt-admin-hero"> <h1>Baristalay Tema Paneli</h1> <p>Slider görselleri, ana sayfa metinleri, faaliyet kartları, blog, sidebar, renkler, sosyal medya ve özel CSS alanlarını tek panelden yönetebilirsiniz.</p> </div> <div class="bt-note"><strong>Slider görseli ekleme:</strong> Slider sekmesindeki “Görsel Seç / Yükle” butonuna basıp WordPress ortam kütüphanesinden görsel seçebilirsin. Önerilen ölçü: 1400×900 veya 1600×1000.</div> <div class="bt-tabs"><a href="#bt-general">Genel</a><a href="#bt-slider">Slider</a><a href="#bt-about">Hakkımızda</a><a href="#bt-activities">Faaliyetler</a><a href="#bt-blog">Blog & Sidebar</a><a href="#bt-footer">Footer</a><a href="#bt-social">Sosyal Medya</a><a href="#bt-css">Ek CSS</a></div> <form method="post" action="options.php"> <?php settings_fields('bt_theme_options_group'); ?> <?php bt_section_open('bt-general','Genel Görünüm','Logo metni, renkler ve header butonu.'); ?> <?php bt_field('site_logo_text','Logo Metni'); bt_field('primary_color','Koyu Mavi Ana Renk','color'); bt_field('secondary_color','İkinci Mavi Ton','color'); bt_field('accent_color','Kırmızı Vurgu Rengi','color'); bt_field('light_bg','Açık Arka Fon','color'); bt_field('header_cta_text','Header Buton Metni'); bt_field('header_cta_link','Header Buton Linki'); ?> <?php bt_section_close(); ?> <?php bt_section_open('bt-slider','Slider Alanı','Her slider için başlık, açıklama, buton ve görsel seçebilirsin.'); ?> <?php bt_field('hero_badge','Slider Etiketi'); for($i=1;$i<=3;$i++){ bt_field("hero_title_$i","$i. Slider Başlık"); bt_field("hero_text_$i","$i. Slider Açıklama",'textarea'); bt_field("hero_button_$i","$i. Buton Metni"); bt_field("hero_link_$i","$i. Buton Linki"); bt_media_field("hero_image_$i","$i. Slider Görseli",'Boş bırakırsan otomatik dekoratif kart görünümü kullanılır.'); } ?> <?php bt_section_close(); ?> <?php bt_section_open('bt-about','Hakkımızda','Hakkımızda görseli, metni ve madde alanları.'); ?> <?php bt_media_field('about_image','Hakkımızda Görseli'); bt_field('about_badge_number','Rozet Sayısı'); bt_field('about_badge_text','Rozet Metni'); bt_field('about_title','Başlık'); bt_field('about_text','Açıklama','textarea'); bt_field('about_li_1','Madde 1'); bt_field('about_li_2','Madde 2'); bt_field('about_li_3','Madde 3'); ?> <?php bt_section_close(); ?> <?php bt_section_open('bt-activities','Faaliyet Alanları','6 adet faaliyet kartını buradan yönetebilirsin. İkon alanına sayı, kısa kelime veya emoji yazılabilir.'); ?> <?php bt_field('activities_title','Bölüm Başlığı'); bt_field('activities_text','Bölüm Açıklaması','textarea'); for($i=1;$i<=6;$i++){ bt_field("activity_{$i}_icon","{$i}. Kart İkon/Yazı"); bt_field("activity_{$i}_title","{$i}. Kart Başlık"); bt_field("activity_{$i}_text","{$i}. Kart Açıklama",'textarea'); } ?> <?php bt_section_close(); ?> <?php bt_section_open('bt-blog','Blog & Sidebar','Ana sayfa blog sayısı, blog arşivi ve single sidebar CTA ayarları.'); ?> <?php bt_field('blog_title','Ana Sayfa Blog Başlığı'); bt_field('blog_text','Ana Sayfa Blog Açıklaması','textarea'); bt_field('home_post_count','Ana Sayfa Blog Sayısı','number'); bt_field('blog_archive_title','/blog/ Başlığı'); bt_field('blog_archive_text','/blog/ Açıklaması','textarea'); bt_field('sidebar_cta_title','Sidebar CTA Başlığı'); bt_field('sidebar_cta_text','Sidebar CTA Açıklaması','textarea'); bt_field('sidebar_cta_button','Sidebar CTA Butonu'); bt_field('sidebar_cta_link','Sidebar CTA Linki'); ?> <?php bt_section_close(); ?> <?php bt_section_open('bt-footer','Footer & İletişim','Footer metinleri ve iletişim bilgileri.'); ?> <?php bt_field('footer_text','Footer Açıklama','textarea'); bt_field('footer_copyright','Copyright'); bt_field('contact_email','E-posta'); bt_field('contact_phone','Telefon'); bt_field('contact_address','Adres','textarea'); ?> <?php bt_section_close(); ?> <?php bt_section_open('bt-social','Sosyal Medya','Header ve footer sosyal ikonları buradan yönetilir.'); ?> <?php foreach(['facebook','instagram','x','linkedin','youtube'] as $s){ bt_field('social_'.$s, ucfirst($s).' Linki'); } ?> <?php bt_section_close(); ?> <?php bt_section_open('bt-css','Ek CSS / Hızlı Stil Güncelleme','FTP’ye girmeden küçük CSS düzenlemelerini buradan yazabilirsin.'); ?> <?php bt_field('custom_css','Özel CSS','textarea','Örnek: .hero h1{font-size:64px;}'); ?> <?php bt_section_close(); ?> <div class="bt-submit"><?php submit_button('Ayarları Kaydet','primary','submit',false); ?></div> </form> </div> <?php }