# Developer Wiki > Guides for writing FluxWP plugins and themes, AI-enabled features and the shared platform. Add .md to any page address to get its Markdown. The whole wiki in one file: https://fluxwp.com/wiki/llms-full.txt ## Başlangıç - [FluxWP nedir?](https://fluxwp.com/wiki/fluxwp-nedir.md): FluxWP; WordPress için tek elden yönetilen eklenti, tema ve uygulama ailesidir. Bu sayfa repoları, paketleri ve ortak kuralları özetler. - [Adlandırma kuralları](https://fluxwp.com/wiki/adlandirma.md): Paket kısa adı, görünen ad, kod öneki, hook, REST ad alanı, option ve MCP araç adları için FluxWP kuralları. - [Bu wiki nasıl kullanılır?](https://fluxwp.com/wiki/wiki-kullanimi.md): Flux Wiki'de arama, Markdown yazımı, wiki bağlantıları, not kutuları, LLM için .md ve llms.txt adresleri ve MCP araçları. ## Eklenti geliştirme - [Yeni eklenti yazma](https://fluxwp.com/wiki/eklenti-yazma.md): Sıfırdan bir FluxWP eklentisi: klasör yapısı, ana dosya başlığı, sabitler, çeviri yükleyici, marka modülü, ikon ve paket dosyaları. - [Ayarlar ve ayar şeması](https://fluxwp.com/wiki/eklenti-yazma/ayarlar.md): Ayarlar panelden girilir, tek option dizisinde saklanır ve flx_settings_schema ile ön ayar ve AI'ye tanıtılır. - [Çeviri ve tarih](https://fluxwp.com/wiki/eklenti-yazma/ceviri.md): Kaynak dil Türkçe, İngilizce çeviri pakette; genstr.py ile .pot/.po/.mo üretimi, JS metinleri ve flx_date / flx_time_ago. - [Flux Admin entegrasyonu](https://fluxwp.com/wiki/eklenti-yazma/flux-admin.md): Sayfa başlığı, menü logosu, menü grubu, uygulama kısayolu ve güncelleme ekranı logosu için filtreler. - [Sistem kontrolü](https://fluxwp.com/wiki/eklenti-yazma/sistem-kontrolu.md): Her paket kendi sağlık satırlarını flx_system_checks ile ortak Sistem kontrolü ekranına ekler. ## AI ve MCP - [Eklentiyi AI destekli yapmak](https://fluxwp.com/wiki/ai-destekli-eklenti.md): AI kullanan her FluxWP eklentisi Flux AI üzerinden geçer; flxai_chat, flxai_ready, kaynak kaydı, hatalar ve yedek kod. - [MCP aracı yazmak](https://fluxwp.com/wiki/ai-destekli-eklenti/mcp-araci-yazma.md): flx_mcp_tools ile eklentinizin işlevlerini Flux AI sohbetine ve dış MCP istemcilerine (Claude, Cursor) açın; kaynak ve istem ekleyin. - [AI için iyi uygulamalar](https://fluxwp.com/wiki/ai-destekli-eklenti/iyi-uygulamalar.md): Maliyet, önbellek, model seçimi, kişisel veri, onay, ziyaretçiye açık AI ve test için kısa kontrol listesi. ## Tema geliştirme - [Tema yazma](https://fluxwp.com/wiki/tema-yazma.md): FluxWP blok teması yapısı; theme.json renkleri, şablonlar, parçalar, stil varyasyonları, koyu mod ve eklentilerle uyum. - [Ön ayar eklentisi](https://fluxwp.com/wiki/tema-yazma/on-ayar-eklentisi.md): Kuruma ya da siteye özel logo, renk, sayfa ve ayarları taşıyan flx-preset-* eklentileri ve preset.json. ## Sürüm ve yayın - [Sürüm ve yayın](https://fluxwp.com/wiki/surum-ve-yayin.md): Sürüm numarası ve CHANGELOG, main'e birleşince otomatik zip ve GitHub release, güncelleme testi ve sitelere dağıtım. --- # FluxWP nedir? > FluxWP; WordPress için tek elden yönetilen eklenti, tema ve uygulama ailesidir. Bu sayfa repoları, paketleri ve ortak kuralları özetler. Source: https://fluxwp.com/wiki/fluxwp-nedir/ Section: Başlangıç Last updated: 2026-11-04 FluxWP; WordPress (ve WooCommerce) siteleri için tek elden geliştirilen eklenti, tema ve uygulama ailesidir. Her paket kendi işini yapar, ama ayarlar, AI, marka imzası, güncelleme ve yönetim menüsü gibi işler **ortak altyapıdan** gelir. Böylece yeni bir eklenti yazarken tekerleği yeniden icat etmezsiniz. ## Repolar | Repo | İçerik | |---|---| | `FluxWP/fluxwp` | Ana monorepo: `plugins/`, `themes/`, FluxApp (React panel + Tauri) `apps/`, ortak araçlar `tools/` | | `FluxWP/wp-extras` | Özel paketler: ön ayar eklentileri (`flx-preset-*`), TV Board, TV Remote, Staff, Qurban | | `FluxWP/updater` | Güncelleme sunucusu (`updater.fluxwp.com`) | | `FluxWP/whatsapp-api` | WhatsApp köprüsü | | `FluxWP/mobile` | iOS ve Android uygulaması (Expo) | ## Ortak altyapı - **Flux Setup** (`flx-setup`): kurulum sihirbazı, güncellemeler, ön ayarlar ve ayar şeması (`flx_settings_schema`). - **Flux Admin** (`flx-admin`): tek yönetim menüsü, sayfa başlıkları, paket logoları, koyu tema. - **Flux AI & MCP** (`flx-ai`): anahtarlar, modeller, harcama sınırı, ortak sohbet ve MCP sunucusu. AI kullanan her paket buradan geçer: [Eklentiyi AI destekli yapmak](https://fluxwp.com/wiki/ai-destekli-eklenti/). - **flx-brand**: her pakete kopyalanan küçük modül; "Altyapı: FluxWP" imzası ve tarih yardımcıları `flx_date()`, `flx_time_ago()`. - **Sistem kontrolü** (`flx_system_checks`): her paket kendi sağlık satırlarını aynı ekrana ekler. ## Temel kurallar > [!IMPORTANT] > Bu kurallar her pakette geçerlidir; kod incelemesinde ilk bakılan yerlerdir. 1. **Ayarlar panelden girilir.** Sunucu adresi, API anahtarı, token gibi değerler `wp-config.php` sabitine bağlanmaz; ayar ekranında durur (kurtarma sabitleri hariç, ör. `FLXRC_DISABLE`). 2. **Tüm metinler çevrilebilir.** Kaynak dil Türkçe, İngilizce çeviri pakette gelir. Koda gömülü Türkçe metin olmaz: [Çeviri ve tarih](https://fluxwp.com/wiki/eklenti-yazma/ceviri/). 3. **Tarih tek yerden.** `human_time_diff()` ve `wp_date()` doğrudan kullanılmaz; `flx_date()` ve `flx_time_ago()` kullanılır. 4. **AI tek yerden.** Paketler sağlayıcıya doğrudan istek atmaz; `flxai_chat()` kullanır. 5. **Önekler.** Her paketin kendi kod öneki vardır (`flxrc_`, `flxwk_` …): [Adlandırma kuralları](https://fluxwp.com/wiki/adlandirma/). 6. **Paylaşımlı sunucuda çalışmalı.** Hedef ortam Hostinger gibi paylaşımlı barındırma: PHP isteği ~60 saniyede kesilir, Redis ve Supervisor yoktur, WP-Cron güvenilir değildir. Uzun işler parça parça ve tarayıcı yoklamasıyla ilerler. 7. **JS paket yöneticisi Bun.** `npm` ya da `pnpm` değil. ## Nereden başlamalı? - Yeni eklenti: [Yeni eklenti yazma](https://fluxwp.com/wiki/eklenti-yazma/) - Eklentiye AI özelliği: [Eklentiyi AI destekli yapmak](https://fluxwp.com/wiki/ai-destekli-eklenti/) - MCP aracı: [MCP aracı yazmak](https://fluxwp.com/wiki/ai-destekli-eklenti/mcp-araci-yazma/) - Tema: [Tema yazma](https://fluxwp.com/wiki/tema-yazma/) - Yayınlama: [Sürüm ve yayın](https://fluxwp.com/wiki/surum-ve-yayin/) --- # Adlandırma kuralları > Paket kısa adı, görünen ad, kod öneki, hook, REST ad alanı, option ve MCP araç adları için FluxWP kuralları. Source: https://fluxwp.com/wiki/adlandirma/ Section: Başlangıç Last updated: 2026-11-04 FluxWP'de birçok paket aynı sitede birlikte çalışır. Çakışma olmasın diye her adın bir kuralı vardır. ## Özet tablo | Ne | Kural | Örnek | |---|---|---| | Klasör / slug | `flx-` | `flx-wiki` | | Görünen ad | `Flux <İngilizce ad>` (her dilde aynı) | Flux Wiki | | Tema adı | `FluxWP` | FluxWP | | Ön ayar eklentisi | `flx-preset-` | `flx-preset-fluxwp` | | Kod öneki | `flx_` | `flxwk_search()` | | Sınıf / sabit öneki | `FLX_` | `FLXWK_VERSION` | | Ortak hook ve fonksiyon | `flx_` | `flx_mcp_tools`, `flx_system_checks` | | REST ad alanı | slug + sürüm | `flx-wiki/v1` | | Option | önek + ad | `flxwk_settings` | | MCP aracı | önek + fiil | `flxwk_get_page` | | npm paketi | `@fluxwp/` | `@fluxwp/panel` | ## Önek seçerken - Önek benzersiz olmalı. Önce repoda arayın: `grep -rn "flxwk_" plugins themes`. - Önek **eklentinin kendi hook'larında** da kullanılır (`flxwk_base`, `flxwk_ai_links`). Başka paketlerin de kullanacağı ortak hook gerekiyorsa `flx_` ile başlar ve API belgesine yazılır. - Önek uzunluğuna bağlı kod yazmayın (ör. `substr( $key, 5 )`). Ad değişikliklerinde en çok bu tür kod kırılır. > [!WARNING] > MCP araç adları tüm eklentiler arasında tek bir listede durur. Öneksiz araç adı (ör. `search`) başka bir eklentinin aracıyla çakışır; her zaman önekli yazın. ## Görünen ad ve menü Eklenti başlığındaki `Plugin Name` görünen addır (`Flux Wiki`). Yönetim menüsündeki kısa ad çevrilebilir olabilir (`Wiki`), ama paket adı çevrilmez. --- # Bu wiki nasıl kullanılır? > Flux Wiki'de arama, Markdown yazımı, wiki bağlantıları, not kutuları, LLM için .md ve llms.txt adresleri ve MCP araçları. Source: https://fluxwp.com/wiki/wiki-kullanimi/ Section: Başlangıç Last updated: 2026-11-04 Bu wiki **Flux Wiki** eklentisiyle çalışır. Sayfalar Markdown yazılır; her sayfa hem insanlar hem de AI ajanları için okunaklıdır. ## Arama - Her sayfada Ctrl + K (Mac'te ⌘ + K) ya da / arama penceresini açar. - Türkçe karakterler eşit sayılır: `ozel`, `özel` ile aynı sonucu verir. - Sonuç en iyi eşleşen ara başlığa götürür. - Flux AI açıksa **Wiki'ye sor** sekmesi, sorunuzu wiki sayfalarına dayanarak yanıtlar ve kaynakları listeler. ## Markdown yazımı GitHub biçimi geçerlidir: başlıklar, listeler, tablolar, kod blokları. ```markdown ## Ara başlık Metin, **kalın**, `satır içi kod`. | Sütun | Açıklama | |---|---| | a | b | ``` Sayfa başlığını içerikte tekrar yazmayın; en üst seviye `##` olsun. İçindekiler `##` ve `###` başlıklarından üretilir. ### Wiki bağlantıları - `[[adlandirma]]` sayfanın kısa adıyla bağlantı kurar; başlık otomatik yazılır. - `[[eklenti-yazma/ceviri|çeviri rehberi]]` alt sayfaya, kendi etiketinizle. - `[[adlandirma#ozet-tablo]]` sayfadaki bir başlığa. - Olmayan sayfa kırmızı kesikli çizgiyle görünür; yazılmayı bekleyen konuları böyle işaretleyebilirsiniz. ### Not kutuları ```markdown > [!TIP] > Kısa ipucu. ``` Türler: `NOTE`, `TIP`, `IMPORTANT`, `WARNING`, `CAUTION`. > [!TIP] > Kod bloklarının sağ üstünde kopyalama düğmesi vardır. ## LLM ve AI ajanları için | Adres | Ne | |---|---| | `/wiki/.md` | Sayfanın düz Markdown'u (başlık, kaynak adresi, güncelleme tarihi ile) | | `/wiki/llms.txt` | Tüm sayfaların dizini ([llms.txt](https://llmstxt.org/) biçimi) | | `/wiki/llms-full.txt` | Tüm wiki tek dosyada | | `/wiki/index.md` | Dizin, Markdown | Sayfadaki **Markdown'u kopyala** düğmesi sayfayı panoya alır; **AI'a sor** menüsü ChatGPT, Claude, Google AI ya da Perplexity'de sayfayı okutan bir sohbet başlatır. `Accept: text/markdown` başlığıyla istek atan ajanlara sayfa adresi de doğrudan Markdown döner. ## MCP Flux AI'nin MCP sunucusu açıksa (Flux AI › MCP) şu araçlar kullanılabilir: | Araç | Ne yapar | |---|---| | `flxwk_search` | Wiki'de arar | | `flxwk_get_page` | Sayfayı Markdown olarak getirir | | `flxwk_list_pages` | Bölümlere göre sayfa ağacı | | `flxwk_save_page` | Sayfa yazar ya da günceller (onay ister; varsayılan taslak) | Kaynaklar: `flxwiki://llms.txt`, `flxwiki://llms-full.txt`. İstem: `flxwk_build_plugin` (yeni eklenti işini ilgili rehberlerle başlatır). Claude Code, Cursor gibi bir istemciye ekleyince ajan önce wiki'yi okuyup FluxWP kurallarına göre kod yazar. --- # Yeni eklenti yazma > Sıfırdan bir FluxWP eklentisi: klasör yapısı, ana dosya başlığı, sabitler, çeviri yükleyici, marka modülü, ikon ve paket dosyaları. Source: https://fluxwp.com/wiki/eklenti-yazma/ Section: Eklenti geliştirme Last updated: 2026-11-04 Bu rehber, `plugins/flx-ornek` adında yeni bir eklentiyi adım adım kurar. Gerçek bir örnek için repodaki `plugins/flx-recaptcha` ya da `plugins/flx-wiki` klasörüne bakın; ikisi de bu iskeleti izler. ## 1. Ad ve önek Önce [Adlandırma kuralları](https://fluxwp.com/wiki/adlandirma/) sayfasına göre seçin: - slug: `flx-ornek`, görünen ad: **Flux Örnek** değil **Flux Example** (görünen ad İngilizce ve her dilde aynı) - kod öneki: `flxex_`, sınıf/sabit öneki: `FLXEX_` - REST: `flx-ornek/v1`, option: `flxex_settings` ## 2. Klasör yapısı ```text plugins/flx-ornek/ ├── flx-ornek.php # eklenti başlığı, sabitler, yükleyici ├── uninstall.php # kaldırınca option/tablo temizliği ├── index.php # "Silence is golden" ├── CHANGELOG.md # Türkçe, en yeni sürüm üstte ├── README.md, README.tr.md ├── .distignore # zip'e girmeyecek dosyalar ├── includes/ │ ├── helpers.php │ ├── admin.php │ ├── rest.php │ ├── system-checks.php │ └── flx-brand/ # tools/brand/sync.py kopyalar, elle değiştirmeyin ├── assets/ # css, js, icon.svg, icon-pastel.svg ├── languages/ # .pot, en_US .po/.mo/.l10n.php ├── tools/ # genstr.py + en.json (zip'e girmez) └── docs/logo.svg # README için ``` Her klasöre boş `index.php` koyun. ## 3. Ana dosya ```php [!IMPORTANT] > `Update URI` güncellemelerin FluxWP sunucusundan gelmesini sağlar; wordpress.org ile ad çakışmasını da önler. `Version` ile `FLXEX_VERSION` her zaman aynı olmalı. ## 4. Çeviri yükleyici Kaynak metinler Türkçe yazılır, İngilizce çeviri pakette gelir. `en_GB`, `en_AU` gibi diller `en_US` çevirisine düşer: ```php add_action( 'init', function () { load_plugin_textdomain( 'flx-ornek', false, dirname( plugin_basename( FLXEX_FILE ) ) . '/languages' ); }, 1 ); add_filter( 'load_textdomain_mofile', function ( $mofile, $domain ) { if ( 'flx-ornek' === $domain && ! is_readable( $mofile ) && preg_match( '/-en_[A-Z]{2}\.mo$/', $mofile ) ) { return FLXEX_DIR . 'languages/flx-ornek-en_US.mo'; } return $mofile; }, 10, 2 ); ``` Ayrıntı: [Çeviri ve tarih](https://fluxwp.com/wiki/eklenti-yazma/ceviri/). ## 5. Marka imzası ```bash python3 tools/brand/sync.py . ../wp-extras ``` Komut `includes/flx-brand/` klasörünü kopyalar ve ana dosyaya `require_once` satırını ekler. Bu modül hem "Altyapı: FluxWP" imzasını hem de `flx_date()` / `flx_time_ago()` yardımcılarını getirir. Kopyaları elle değiştirmeyin; kaynak `tools/brand/flx-brand/`. ## 6. İkon `tools/icons/build.py` içindeki `PKGS` listesine bir satır ekleyin (slug, ad, renk grubu, [Lucide](https://lucide.dev/icons) simgesi) ve üretin: ```bash cd tools/icons && bun install && cd ../.. python3 tools/icons/build.py ``` `assets/icon.svg`, `icon-pastel.svg`, `docs/logo.svg` ile Flux Setup ve Flux Admin'deki kopyalar yazılır. SVG'yi elle çizmeyin. Renk grupları: `platform` (yönetim), `system` (bakım), `comms` (iletişim), `growth` (içerik ve büyüme), `commerce` (ticaret ve bağış). ## 7. Yönetim menüsü ve Flux Admin Kendi menünüzü `add_menu_page()` ile açın; Flux Admin varsa sayfa başlığı, logo ve grup filtreleriyle tek menüye yerleşir: [Flux Admin entegrasyonu](https://fluxwp.com/wiki/eklenti-yazma/flux-admin/). ## 8. Paket dosyaları `.distignore` (GitHub dosyaları zip'e girmesin): ```text # GitHub tanitim dosyalari pakete girmez ./docs ./README.md ./README.tr.md ./tools ``` > [!CAUTION] > `.distignore` yorumlarında kesme işareti (`'`) kullanmayın; `bin/build.sh` satırları `xargs` ile okur ve bozulur. `uninstall.php` yalnız `WP_UNINSTALL_PLUGIN` tanımlıyken çalışır ve kendi option'larınızı siler. ## 9. Kontrol listesi - [ ] Ad ve önek benzersiz - [ ] Tüm metinler `__( '…', 'flx-ornek' )`, İngilizce karşılıkları `tools/en.json`'da - [ ] Ayarlar panelde, şeması `flx_settings_schema`'da: [Ayarlar ve ayar şeması](https://fluxwp.com/wiki/eklenti-yazma/ayarlar/) - [ ] Sağlık satırları `flx_system_checks`'te: [Sistem kontrolü](https://fluxwp.com/wiki/eklenti-yazma/sistem-kontrolu/) - [ ] AI varsa yalnız Flux AI üzerinden: [Eklentiyi AI destekli yapmak](https://fluxwp.com/wiki/ai-destekli-eklenti/) - [ ] `CHANGELOG.md` ve sürüm: [Sürüm ve yayın](https://fluxwp.com/wiki/surum-ve-yayin/) --- # Ayarlar ve ayar şeması > Ayarlar panelden girilir, tek option dizisinde saklanır ve flx_settings_schema ile ön ayar ve AI'ye tanıtılır. Source: https://fluxwp.com/wiki/eklenti-yazma/ayarlar/ Section: Eklenti geliştirme Last updated: 2026-11-04 FluxWP'de ayarlar **panelden** girilir. API anahtarı, sunucu adresi, token gibi değerler `wp-config.php` sabitine bağlanmaz. ## Saklama Eklentinin ayarları tek bir option dizisinde durur: `flxex_settings`. Varsayılanlar bir fonksiyonda toplanır, okuma her zaman birleştirerek yapılır: ```php function flxex_defaults() { return array( 'enabled' => 1, 'limit' => 20, 'mode' => 'auto' ); } function flxex_settings() { $s = get_option( 'flxex_settings', array() ); return array_merge( flxex_defaults(), is_array( $s ) ? $s : array() ); } ``` Gizli değerleri (API anahtarı) düz yazmayın; şifreli saklayın ve ekranda yalnız son karakterlerini gösterin. ## Kaydetme - Form `admin-post.php`'ye gider, `check_admin_referer()` ve `current_user_can()` ile doğrulanır. - Her alan tek tek temizlenir (`sanitize_text_field`, `absint`, izin listesi). - Kayıttan sonra `wp_safe_redirect()` ile ayar sayfasına `?msg=saved` ile dönün. > [!WARNING] > Formdan gelmeyen onay kutusunu "kapalı" saymadan önce, isteğin gerçekten bu formdan geldiğini ayırın (`