Hazırlık İşlemleri ve Ortam Kurulumu
Kod yazmaya başlamadan önce, uygun bir geliştirme ortamına sahip olduğunuzdan emin olmanız gerekir. Bu, yerel bir WordPress kurulumu ve bir kod editörünü içerir. Yerel ortam, çevrimiçi web sitesini etkilemeden özgürce test ve hata ayıklama yapmanıza olanak tanır. Yaygın olarak kullanılan yerel geliştirme ortamı yazılımları arasında Local by Flywheel, XAMPP ve MAMP bulunmaktadır.
Eklentiniz için benzersiz bir isim düşünmeniz gerekiyor; bu isim hem eklentinin ana dizin adı hem de ana dosya adı olarak kullanılacak. Örneğin, eklentinizin adı “Hello World” ise, ana eklenti dosyanızın adı “HelloWorld.js” olabilir. hello-world.phpEklenti adınızın ve açıklamanızın WordPress eklenti dizininde benzersiz olduğundan emin olun; bu, diğer eklentilerle olası çakışmaları önlemeye yardımcı olacaktır.
Ayrıca, WordPress’in resmi geliştirme kılavuzlarına ve kod referanslarına aşina olmak son derece önemlidir. WordPress’in temel kavramlarını, örneğin Eylem Kancaları (Action Hooks), Filtre Kancaları (Filter Hooks), Kısa Kodlar (Shortcodes) ve Ayar API’sini (Settings API) anlamak, geliştirme çalışmalarınız için sağlam bir temel oluşturacaktır.
Tavsiye edilen okuma WordPress Eklenti Geliştirme Rehberi: Sıfırdan Başlayarak Profesyonel PHP Eklentileri Oluşturma。
İlk eklenti dosyasını oluşturun.
Eklentinin çekirdeği bir veya daha fazla PHP dosyasından oluşur. En basit durumda, bir eklenti yalnızca bir PHP dosyasından oluşabilir. Etkili bir eklenti oluşturmak için, ana eklenti dosyasının başına standart eklenti bilgilerini içeren bir yorum eklemeniz gerekir. Bu yorum bloğu, WordPress’e eklentiniz hakkındaki tüm meta bilgileri (ad, açıklama, sürüm, yazar vb.) sağlar.
Plugin başlık bilgilerini yazın.
WordPress, eklenti bilgilerini tanımak ve göstermek için dosyanın başındaki belirli bir biçimdeki yorumları okur. Aşağıda en temel bir eklenti başlık örneği bulunmaktadır:
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个用于学习和演示的简单 WordPress 插件。
* Version: 1.0.0
* Requires at least: 5.2
* Requires PHP: 7.2
* Author: 你的名字
* Author URI: https://example.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
* Domain Path: /languages
*/ Bu kodu yeni bir PHP dosyası olarak kaydedin, örneğin `new_file.php` adında. my-first-plugin.phpArdından, bu dosyayı yerel WordPress kurulum dizininize koyun. wp-content/plugins Dosya klasöründe bulunuyor. Şimdi WordPress yönetim panelinin “Eklentiler” sayfasına girin; listede “İlk Eklentim” adında yeni bir eklentinin yer aldığını göreceksiniz ve onu etkinleştirebilirsiniz. Şu an için herhangi bir özelliği yok.
Eklentiye temel özellikler ekleyin.
Eklenti etkinleştirildikten sonra, ona basit bir özellik ekleyeceğiz: Makale içeriğinin sonuna otomatik olarak özelleştirilmiş bir metin parçası ekleyecek. Bunun için WordPress’in filtre kancalarından (filter hooks) yararlanacağız. the_content。
Aşağıdaki kodu az önceki eklentinin başlık bilgilerinin hemen altına ekleyebilirsiniz:
Tavsiye edilen okuma Sıfırdan Başlayın: WordPress Eklenti Geliştirme Sürecinin Ayrıntılı Anlatımı。
/**
* 在文章内容末尾添加自定义文本
*
* @param string $content 当前文章内容。
* @return string 修改后的文章内容。
*/
function mfp_add_footer_text( $content ) {
// 仅针对主循环中的单个文章页面
if ( is_single() && in_the_loop() && is_main_query() ) {
$custom_text = '<p><em>Bu makaleyi okuduğunuz için teşekkür ederiz; “Benim İlk Eklentim” tarafından sunulmuştur.</em></p>';
$content .= $custom_text;
}
return $content;
}
// 将自定义函数挂载到 `the_content` 过滤器上
add_filter( 'the_content', 'mfp_add_footer_text' ); Bu kod, “” adında bir şey tanımlamaktadır. mfp_add_footer_text Bu fonksiyon, makale içeriğini alır. $content Bir parametre olarak. Fonksiyonun içinde öncelikle koşullu etiketler (conditional tags) kullanılır.is_single(), in_the_loop(), is_main_query()Bu işlem, içeriğin yalnızca belirli bir makale sayfasının ana döngüsünde değiştirilmesini sağlar; böylece ana sayfa, arşiv sayfaları gibi diğer sayfalar etkilenmez. Daha sonra, özel bir HTML metni oluşturulur ve bu metin orijinal içeriğin ardına eklenir. Son olarak, bu değişiklikler sayfada görüntülenir. add_filter Bu fonksiyon, özel olarak oluşturulan bu fonksiyonu WordPress’e “monte eder”. the_content Filtre üzerinde.
Dosyayı kaydettikten sonra, ön uçtaki bir makale sayfasını yenileyin; eklenen metni makalenin ana metninin sonunda göreceksiniz.
Gelişmiş Özellikler Geliştirme: Yönetim Menüsü ve Seçenek Sayfaları Oluşturma
İyi özelliklere sahip bir eklenti genellikle yönetici ile etkileşim gerektirir ve bu, genellikle arka uçta ayar sayfaları eklenerek sağlanır. WordPress, yönetim menüleri ve seçenek sayfaları oluşturmak için zengin bir API sunar.
Arka planda eklenti menü öğesini ekleyin.
Eklenti için, bazı seçenekleri yapılandırmak amacıyla kullanılacak bağımsız bir yönetim menüsü sayfası oluşturacağız. Bunun için şunları kullanmamız gerekecek: add_action Kancalar ve admin_menu Eylem.
Eklentinin ana dosyasına aşağıdaki kodu eklemeye devam edin:
/**
* 在 WordPress 后台管理菜单中添加一个新的顶级菜单项
*/
function mfp_register_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 所需权限
'my-first-plugin', // 菜单 slug
'mfp_render_settings_page', // 渲染页面的回调函数
'dashicons-admin-plugins', // 图标(可选)
80 // 菜单位置
);
}
add_action( 'admin_menu', 'mfp_register_admin_menu' ); add_menu_page Bu fonksiyon, yeni bir üst düzey menü kaydetmek için kullanılır.manage_options Bu, bir yetki tanımıdır ve yalnızca “Yönetim Seçenekleri” yetkisine sahip kullanıcıların (genellikle yöneticiler) bu menüyü görebileceği anlamına gelir.mfp_render_settings_page Bu, bir sonraki adımda tanımlayacağımız ve ayar sayfasının HTML içeriğini çıkarmak için kullanılacak fonksiyonun adıdır.
Tavsiye edilen okuma WordPress Eklenti Geliştirme Kılavuzu: İlk Özel Eklentinizi Sıfırdan Oluşturun。
Yapılandırma sayfasının içeriğini oluşturma
Şimdi, yukarıda bahsedilen geri çağırma fonksiyonunu tanımlamamız gerekiyor. mfp_render_settings_page Basit bir ayar sayfası oluşturmak için şunları yapabilirsiniz:
/**
* Ayarlar sayfasının içeriğini oluştur.
*/
function mfp_render_settings_page() {
?>
<div class="wrap">
<h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
<form action="/tr/options.php/" method="post" data-trp-original-action="options.php">
<?php
// 输出设置字段、安全 nonce 字段等
settings_fields( 'mfp_settings_group' );
do_settings_sections( 'my-first-plugin' );
submit_button( '保存设置' );
?>
<input type="hidden" name="trp-form-language" value="tr"/></form>
</div>
<?php
} Bu fonksiyon, bir başlık ve bir form içeren temel bir WordPress yönetim sayfası yapısı döndürür. WordPress ayar API’sinin iki temel fonksiyonunu kullanmaktadır:settings_fields 和 do_settings_sectionsÇalışması için ayrıca ayarları, bölümleri ve alanları da kaydetmemiz gerekiyor.
Ayarlar API’sini kullanarak kayıt seçeneklerini gerçekleştirin.
WordPress’in API ayarları, form seçeneklerinin kaydı, saklanması ve doğrulanması için güvenli ve standartlaştırılmış bir yol sunar. Şimdi, basit bir metin alanı kaydetmek için aşağıdaki kodu ekliyoruz.
/**
* 初始化插件的设置
*/
function mfp_settings_init() {
// 注册一个新的设置项 `mfp_options` 到数据库
register_setting( 'mfp_settings_group', 'mfp_options' );
// 在页面内添加一个新的节
add_settings_section(
'mfp_section_basic',
'基础设置',
'mfp_section_basic_callback',
'my-first-plugin'
);
// 向节中添加一个字段
add_settings_field(
'mfp_field_custom_text',
'自定义页脚文本',
'mfp_field_custom_text_callback',
'my-first-plugin',
'mfp_section_basic',
array( 'label_for' => 'mfp_field_custom_text' )
);
}
add_action( 'admin_init', 'mfp_settings_init' );
/**
* 节描述的回调函数(可以为空)
*/
function mfp_section_basic_callback() {
echo '<p>Burada eklentinin temel ayarlarını yapılandırabilirsiniz.</p>';
}
/**
* 字段 `mfp_field_custom_text` 的回调函数,用于输出 HTML 输入框
*/
function mfp_field_custom_text_callback() {
// 从数据库获取现有值
$options = get_option( 'mfp_options' );
$value = isset( $options['custom_text'] ) ? $options['custom_text'] : '';
?>
<input type="text"
id="mfp_field_custom_text"
name="mfp_options[custom_text]"
value="<?php echo esc_attr( $value ); ?>"
class="regular-text" />
<p class="description">Bu metin, makalenin sonunda görüntülenecektir.</p>
<?php
} Şimdi, önceki şeyi değiştirmemiz gerekiyor. mfp_add_footer_text Fonksiyonu, sabitlenmiş metin yerine yeni oluşturduğumuz seçenek değerlerini kullanacak şekilde ayarlayın.
function mfp_add_footer_text( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
$options = get_option( 'mfp_options' );
$custom_text = isset( $options['custom_text'] ) ? $options['custom_text'] : '';
if ( ! empty( $custom_text ) ) {
$content .= '<p><em>'`. esc_html($custom_text)`.'</em></p>';
}
}
return $content;
} Böylece, eklentiniz tam bir arka plan ayarları sayfasına sahip oldu. Yöneticiler, “Eklentilerim” menüsü altında ayarlar sayfasını bulabilir, özel bir alt metin girip kaydedebilirler. Bu metin, web sitesinin ön yüzündeki makalelerin sonunda dinamik olarak görüntülenecektir.
Eklenti Optimizasyonu ve Güvenlik Uygulamaları
Eklentiler geliştirirken, en iyi uygulamalara uyum sağlamak güvenlik, performans ve sürdürülebilirlik açısından son derece önemlidir. İşte birkaç temel ilke:
Kod güvenliğini sağlamak
Ön uçtan veya yönetim arayüzünden alınan tüm veriler, tarayıcıya gönderilmeden veya veritabanına kaydedilmeden önce doğrulanmalı, temizlenmeli ve escape işlemine tabi tutulmalıdır. Bu işlem, çapraz sitelik betik (XSS) ve SQL enjeksiyonu gibi güvenlik açıklarını önlemeye yardımcı olur.
- Kaçış karakterleri kullanarak çıktı: `function gibi`
esc_html(),esc_attr(),esc_url(),wp_kses_post()Dinamik içeriği escape etmek için şunu kullanın: - Girdiyi temizleyin: `such as` fonksiyonlarını kullanarak…
sanitize_text_field(),sanitize_email(),intval()Kullanıcıların gönderdiği form verilerini işlemek için… - Yetki kontrolü: Yönetici geri çağırma fonksiyonunda kullanılır.
current_user_can()İkinci bir yetki doğrulaması yapın. Veri değişikliği içeren AJAX veya REST API uç noktalarında, doğrulama için mutlaka bir nonce (sayısal jeton) kullanın.
WordPress kodlama standartlarına uyun.
WordPress kodlama standartlarını kullanmak, kod stilinizin çekirdek kodla uyumlu olmasını sağlar, okunabilirliği artırır ve diğer geliştiricilerin iş birliği yapmasını kolaylaştırır. Bu, doğru girintilerin, parantez stillerinin ve adlandırma kurallarının (fonksiyonlar ve değişkenler için küçük harfler ve alt çizgilerin kullanılması) kullanılmasını içerir. PHP CodeSniffer aracını WordPress standart kurallarıyla birlikte kullanarak kodunuzu otomatik olarak kontrol edebilirsiniz.
Uluslararası destek sağlamak
Eklentinize en başından itibaren uluslararasılaşma desteği eklemek, dünya genelindeki kullanıcıların onu kendi dillerine kolayca çevirmesini sağlar. Bu, esas olarak aşağıdaki adımlar aracılığıyla gerçekleştirilir:
1. Eklentinin baş kısmındaki yorumlarda doğru ayarlamaları yapın. Text Domain 和 Domain Path。
2. Tercih edilen tüm çevrilecek metinlerin etrafında WordPress’in çeviri fonksiyonlarını kullanın, örneğin: (), _e(), esc_html() vs.
3. Poedit gibi araçları kullanarak oluşturma .pot Şablon dosyası, çevirmenlerin kullanımı için hazırlanmıştır. .po 和 .mo Çeviri dosyası.
Örneğin, ayar sayfasının açıklama metnini uluslararası hale getirmek:
İşlev mfp_section_basic_callback() {
echo '<p>'Burada eklentinin temel seçeneklerini yapılandırın. ', 'my-first-plugin' ) . '</p>';
} Özetle.
Bu makale, sıfırdan başlayarak size temel ancak tam özellikli bir WordPress eklentisi oluşturma sürecinin tüm adımlarını göstermektedir. Ortam hazırlığından, eklenti dosyalarının oluşturulmasına, eklentinin başlık bilgilerinin yazılmasına; eylem kancaları (action hooks) ve filtre kancaları (filter hooks) kullanılarak makalelere içerik eklenmesine; ve WordPress ayar API’si kullanılarak karmaşık arka uç yönetim arayüzlerinin oluşturulmasına kadar her şeyi ele aldık. Son olarak, eklenti geliştirme sürecinde son derece önemli olan güvenlik, kodlama standartları ve uluslararasılaştırma gibi optimizasyon uygulamalarını da inceledik.
Bu uygulama sayesinde, WordPress eklenti geliştirmenin temel süreçlerini ve araçlarını öğrenmiş olmalısınız. Bir sonraki adımda, özel makale türleri oluşturma, özel veritabanı tabloları kullanma, jQuery ile etkileşimi geliştirme veya eklentinizi WordPress’in resmi eklenti dizinine gönderme gibi daha karmaşık işlemleri deneyebilirsiniz. Unutmayın ki, sürekli öğrenmek ve temel kodları incelemek, geliştirme becerilerinizi geliştirmenin en iyi yoludur.
Sıkça Sorulan Sorular.
WordPress eklentimizi nasıl hata ayıklarız?
WordPress’ın hata ayıklama modunu etkinleştirmek ilk adımdır. wp-config.php Dosyada, WP_DEBUG Sabit, olarak ayarlandı. trueBu, PHP hatalarını, uyarılarını ve bildirimlerini doğrudan sayfada gösterecektir.
Aynı zamanda, kullanılabilir. error_log() Bu fonksiyon, özelleştirilmiş hata ayıklama bilgilerini sunucunun hata günlüğüne yazar veya JavaScript ve AJAX isteklerini ayıklamak için tarayıcının geliştirici araçlarını (konsol ve ağ sekmesi) kullanır. Karmaşık mantıklar için Xdebug gibi profesyonel hata ayıklama araçlarını kullanmak işleri çok daha kolay hale getirir.
Eklentim temalarla veya diğer eklentilerle çatışma yaşayacak mı?
Mümkün, özellikle aynı “hook’ları” (işlevleri) kullanırken veya genel, küresel değişken adları veya sınıf adları kullanırken. Çatışmaları en aza indirmek için tüm fonksiyonlarınıza, sınıflarınıza, değişkenlerinize ve seçenek adlarınıza benzersiz bir önek eklemeyi unutmayın. Örneğin, şu adları kullanmayın: add_footer_textBunun yerine, benzer bir yöntem kullanılıyor. myplugin_add_footer_text Adı.
Küresel içerikleri (örneğin sorgu değişkenlerini) değiştirmeden önce, kapsamlı bir kontrol ve koşul sınırlaması yapın. Yayınlamadan önce, eklentinizi mümkün olduğunca farklı ortamlarda ve çeşitli tema kombinasyonlarında test edin.
Gelişmiş eklentiler (plugins) geliştirmek için hangi teknolojileri öğrenmem gerekiyor?
Sağlam bir PHP temelinin yanı sıra, aşağıdakileri de derinlemesine anlamanız gerekmektedir:
JavaScript: Öncü taraf etkileşimi ve WordPress özelleştirici geliştirme için kullanılır.
jQuery: WordPress modern JS çerçevelerine geçiyor olsa da, jQuery hala yaygın olarak kullanılmaktadır.
REST API: Bağımsız bir ön uç uygulaması oluşturmak veya harici servislerle etkileşimde bulunmak için kullanılır.
Veritabanı bilgisi: WordPress'in veritabanı yapısını ve özel sorguları güvenli bir şekilde gerçekleştirme veya yeni tablolar oluşturma konusunda bilgi sahibi olmak.
Composer: PHP bağımlılık paketlerini yönetmek için kullanılır.
Yapı araçları: Modern JavaScript ve SASS derlemesini yönetmek için Webpack gibi.
WordPress resmi kataloğuna eklentimi nasıl yayınlayabilirim?
Öncelikle, eklentinizin resmi eklenti geliştirme kılavuzlarına ve güvenlik en iyi uygulamalarına tam olarak uyduğundan emin olun. Bir WordPress.org hesabınıza ihtiyacınız var. Eklentinizin sıkıştırılmış paketini bu hesap altından inceleme için gönderin. İnceleme sürecinde kod kalitesi, güvenlik, lisans (GPL ile uyumlu olmalı) gibi konular kontrol edilecektir.
Eğer eklentiniz onaylanırsa, SVN deposuna eklenir ve eklentinizi SVN aracılığıyla güncelleyip sürdürebilirsiniz. Yayınlandıktan sonra, kullanıcılar WordPress yönetim panellerinde doğrudan eklentinizi arayabilir, indirebilir ve güncelleyebilirler.
Bir sonraki adım, bundan sonra ne yapmalıyım?
Daha fazla okuma ve pratik bilgiler.
Aşağıdaki içerikler bu makalenin konusuyla ilgilidir ve daha fazla okumak için uygundur. Öncelikle mevcut sorununuza en yakın makaleden başlayın, sonra çevresel konulara doğru ilerleyin, genellikle daha iyi sonuçlar alırsınız.
- Web Sitesi Kurma Sürecinin Tam Analizi: Sıfırdan Hayata Geçişe Kadar Teknik Uygulamalar ve SEO Optimizasyon Rehberi
- Mükemmel bir WordPress temasını nasıl seçer ve özelleştirirsiniz?
- WordPress Eklenti Geliştirme Kılavuzu: Sıfırdan Başlayarak İlk Özel Eklentinizi Oluşturun
- WordPress Eklenti Geliştiricisi Olmak: Sıfırdan Bir’e Kapsamlı Rehber
- Kurumsal Web Sitesi Oluşturma Kılavuzu: Sıfırdan Başlayarak Profesyonel Seviyede Geliştirme Sürecinin Tam Analizi