Yeni eklenti yazma
On this page
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ı 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ı
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çinHer klasöre boş index.php koyun.
3. Ana dosya
<?php
/**
* Plugin Name: Flux Example
* Description: Tek cümlede ne yaptığı.
* Version: 0.1.0
* Requires at least: 6.4
* Requires PHP: 7.4
* Author: FluxWP
* License: GPL-2.0-or-later
* Text Domain: flx-ornek
* Domain Path: /languages
* Update URI: https://updater.fluxwp.com/flx-ornek
*/
defined( 'ABSPATH' ) || exit;
require_once __DIR__ . '/includes/flx-brand/loader.php'; // FluxWP signature (tools/brand).
if ( defined( 'FLXEX_VERSION' ) ) {
return; // aynı eklentinin iki kopyası yüklüyse
}
define( 'FLXEX_VERSION', '0.1.0' );
define( 'FLXEX_FILE', __FILE__ );
define( 'FLXEX_DIR', plugin_dir_path( __FILE__ ) );
define( 'FLXEX_URL', plugin_dir_url( __FILE__ ) );
require_once FLXEX_DIR . 'includes/helpers.php';
require_once FLXEX_DIR . 'includes/system-checks.php';
if ( is_admin() ) {
require_once FLXEX_DIR . 'includes/admin.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:
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.
5. Marka imzası
python3 tools/brand/sync.py . ../wp-extrasKomut 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 simgesi) ve üretin:
cd tools/icons && bun install && cd ../..
python3 tools/icons/build.pyassets/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.
8. Paket dosyaları
.distignore (GitHub dosyaları zip’e girmesin):
# GitHub tanitim dosyalari pakete girmez
./docs
./README.md
./README.tr.md
./toolsCaution
.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ı - Sağlık satırları
flx_system_checks‘te: Sistem kontrolü - AI varsa yalnız Flux AI üzerinden: Eklentiyi AI destekli yapmak
-
CHANGELOG.mdve sürüm: Sürüm ve yayın