52
Mustafa Uysal @m_uysl [email protected] blog.uysalmustafa.com #istanbulphp WordPress Plugin Development

IstanbulPHP meetup sunum

Embed Size (px)

Citation preview

Page 1: IstanbulPHP meetup sunum

Mustafa Uysal

@m_uysl [email protected] blog.uysalmustafa.com

#istanbulphp

WordPress Plugin

Development

Page 2: IstanbulPHP meetup sunum

Ben Kimim?• Yazılım Geliştirici

(Nefis Yemek Tarifleri)

• Kurucu (SKOP)

• WordPress Geliştirici(Plugin|Çeviri|Core)

• Yazar @wpnotlari

Page 3: IstanbulPHP meetup sunum
Page 4: IstanbulPHP meetup sunum

• Eklenti Konsepti• Plugin API

• Eklenti Dizini

• Sıfırdan Eklenti Yazalım

• İpuçları

Page 5: IstanbulPHP meetup sunum

Neden Eklenti Geliştiriyoruz?

Page 6: IstanbulPHP meetup sunum

Eklenti Nedir?

WordPress’e yeni işlev ekleyebilirler.Mevcut WordPress özelliğini kaldırabilirler.

Mevcut WordPress özelliğini değiştirebilirler.

PHP scriptidir. (Gülüşmeler) Bunlar;

Page 7: IstanbulPHP meetup sunum

Nerede yaşarlar?

• wp-content/plugins/hede.php • wp-content/plugins/hede/hodo.php • Plugin Header içeren `.php` dosyası

Page 8: IstanbulPHP meetup sunum

Plugin Header

Page 9: IstanbulPHP meetup sunum

Plugin API

https://codex.wordpress.org/Plugin_API

Page 10: IstanbulPHP meetup sunum

Actions

•WordPress çekirdeği tarafından “action” tetiklenir.

•Action’a bağlı kodlar çalıştırılır

Page 11: IstanbulPHP meetup sunum

Actions

Page 12: IstanbulPHP meetup sunum

Filters

• WordPress callback’e veri gönderir

• Callback işini görür, verinin son halini geri gönderir

Page 13: IstanbulPHP meetup sunum

Filters

Page 14: IstanbulPHP meetup sunum

Hadi Eklenti Yazalım

Page 15: IstanbulPHP meetup sunum

Bu eklenti ne yapsın?

• WordPress upload url’i değiştirsinexample.com/wp-content/uploads => cdn.example.com/wp-content/uploads

• Yazı içindeki görselleri değiştirsin

Page 16: IstanbulPHP meetup sunum

Nasıl Yazalım?

Page 17: IstanbulPHP meetup sunum

Prefix

function prefix_fonksiyon_adi()

VSfunction fonksiyon_adi()

Page 18: IstanbulPHP meetup sunum

“Plugin Name” Zorunlu

Page 19: IstanbulPHP meetup sunum
Page 20: IstanbulPHP meetup sunum

“init” en önemli action

Page 21: IstanbulPHP meetup sunum

Tek satırla çoklu dil desteği

Page 22: IstanbulPHP meetup sunum

“admin_menu”

Page 23: IstanbulPHP meetup sunum

“admin_menu”

Page 24: IstanbulPHP meetup sunum

“admin_init”

Page 25: IstanbulPHP meetup sunum
Page 26: IstanbulPHP meetup sunum
Page 27: IstanbulPHP meetup sunum
Page 28: IstanbulPHP meetup sunum

https://gist.github.com/mustafauysal/73a9dfe8cde23405916b

Eklentiyi Yazdık Ya Sonra?

Page 29: IstanbulPHP meetup sunum
Page 30: IstanbulPHP meetup sunum

Readme.txt

Readme Oluşturucu: http://sudarmuthu.com/wordpress/wp-readme/

Page 31: IstanbulPHP meetup sunum

Readme Validator

https://wordpress.org/plugins/about/validator/

Page 32: IstanbulPHP meetup sunum

svn checkout http://plugins.svn.wordpress.org/eklenti-adi

SVN

Page 33: IstanbulPHP meetup sunum

geliştirme aşaması için /trunk

sürümler için /tag

Page 34: IstanbulPHP meetup sunum

“Stable tag” belirtelim

/trunk/readme.txt

Page 35: IstanbulPHP meetup sunum

İpuçları

Page 36: IstanbulPHP meetup sunum

Eklentiyi Yazmadan Önce Araştır

Hali hazırda 40k+ eklenti var

Page 37: IstanbulPHP meetup sunum

define('WP_DEBUG', true);define('WP_DEBUG_LOG', true);define('SAVEQUERIES', true);

Page 38: IstanbulPHP meetup sunum

WordPress Coding Standards

https://codex.wordpress.org/WordPress_Coding_Standards

Page 39: IstanbulPHP meetup sunum

i18nhttps://codex.wordpress.org/I18n_for_WordPress_Developers

Page 40: IstanbulPHP meetup sunum

Object Oriented Yaz

Page 41: IstanbulPHP meetup sunum

Array Tipinde Sakla

Page 42: IstanbulPHP meetup sunum

Test Yaz

wp scaffold plugin-tests eklenti-adi

WP_UnitTestCase

wp-cli.org

Page 43: IstanbulPHP meetup sunum

do_action( $tag, $arg… );

apply_filters( $tag, $value, $param…);

Page 44: IstanbulPHP meetup sunum

Git Kullan

https://gist.github.com/scribu/1125050

Page 45: IstanbulPHP meetup sunum

Güncel TutSürüm Yayınla

PHP versiyonuna dikkat

Page 46: IstanbulPHP meetup sunum

sanitize_*$wpdb->prepare()

Page 47: IstanbulPHP meetup sunum

esc_*nonce

Page 48: IstanbulPHP meetup sunum

WordPress API’lerini kullan

Page 49: IstanbulPHP meetup sunum

Geri uyumluluk = Sorumluluk

Önce Deprecate

Page 50: IstanbulPHP meetup sunum

Kullanıcıları Dinle

https://wordpress.org/support/view/plugin-committer/kullanici-adi

Page 51: IstanbulPHP meetup sunum

Sorular?

Page 52: IstanbulPHP meetup sunum

Mustafa Uysal

@m_uysl [email protected] blog.uysalmustafa.com

#istanbulphp

Teşekkürler

[email protected]

Bize Ulaşın