Gerekli fonksiyonlar ve yöntemlerin analizi.

3 dakika okuma.
2026-03-12
2026-06-04
1,970
Aşağıdaki bağlantılar üzerinden alışveriş yaptığınızda, sizin için ek bir maliyet olmadan komisyon kazanıyorum.

WordPress geliştirme sürecinde, eklentilerin başarısı veya başarısızlığı genellikle WordPress’in çekirdeğinde sunulan güçlü fonksiyonların iyi kullanılıp kullanılmadığına bağlıdır. Bu bölümde, en temel ve en sık kullanılan eklenti API’lerine odaklanarak, bunların kullanım senaryolarını, parametrelerini ve yöntemlerini ayrıntılı bir şekilde inceleyeceğiz. Böylece geliştiricilerin sağlam, verimli ve kolayca sürdürülebilir eklentiler oluşturmalarına yardımcı olacağız.

Core Actions and Filter Hook Functions

WordPress’in eklenti mimarisi, “kancalar” (hooks) sistemine dayanmaktadır; bu sistem, geliştiricilere çekirdek kodun belirli noktalarında özel işlevler eklemelerine olanak tanır. Bu kancaların nasıl çalıştığını anlamak ve doğru bir şekilde kullanmak, eklenti geliştirmenin ilk adımıdır.

Özel bir özelliği WordPress’in çekirdek işlemlerine entegre etmek

Eklentilerin işlevleri, uygun zamanda tetiklenmelidir ve bu genellikle WordPress’in “eylem” (action) mekanizması aracılığıyla sağlanır.add_action Fonksiyonlar, eklentileri çekirdek yaşam döngüsüyle bağlayan köprülerdir; geliştiricilere belirli olaylar meydana geldiğinde özel kodları çalıştırma olanağı sağlarlar. remove_action Bu komut, zaten monte edilmiş olan bir eylemi kaldırmak için kullanılır.

Tavsiye edilen okuma WordPress eklenti geliştirmeye başlama rehberi: İlk eklentinizi sıfırdan oluşturun.

Temel sözdizimi şu şekildedir:

UltaHost WordPress Sunucusu
30 gün iade garantisi, sınırsız bant genişliği ve veritabanı kullanımı, ücretsiz DDoS koruması; 3 yıllık abonelikte indirim (50%).
add_action( string $hook_name, callable $callback, int $priority = 10, int $accepted_args = 1 )

Örneğin, makale içeriği yayınlandıktan sonra bir bildirim e-postası göndermek:

function send_post_notification( $post_id ) {
    // 发送邮件的逻辑
}
add_action( 'publish_post', 'send_post_notification' );

add_action Öncelik parametresi, aynı işlemde (hook) bulunan birden fazla geri çağırmanın (callback) yürütülme sırasını belirler; sayı ne kadar küçükse, o kadar önce yürütülür. Bu özellik, yürütme sırasını kontrol etmeye ihtiyaç duyan karmaşık eklentiler (plugins) için son derece önemlidir.

Başka fonksiyonlara iletilen verileri veya çıktıyı değiştirmek

Belirli bir zamanda kodu çalıştırmak dışında, geliştiriciler sık sık diğer fonksiyonların ürettiği verileri değiştirmeye ihtiyaç duyarlar; bu durumlarda filtre kancaları (filter hooks) kullanılır.add_filter Bu fonksiyon, filtre geri çağrılarını eklemek için kullanılır; girdi verilerini alır ve bu verileri değiştirdikten sonra geri döndürmelidir.

Örneğin, tüm makale başlıklarının son karakterlerini değiştirmek:

Tavsiye edilen okuma Bu WooCommerce kancalarını ve filtrelerini öğrenin ve e-ticaret web sitenizin işlevlerini özelleştirin.

function modify_post_title( $title ) {
    return $title . ' - 我的网站';
}
add_filter( 'the_title', 'modify_post_title' );

add_action Benzer şekilde…add_filter Önceliklerin ve parametre sayısının ayarlanmasını da destekler. Filtreler, WordPress’in yüksek derecede özelleştirilebilir olmasının temel taşlarından biridir.

Veritabanı İşlemleri ve Seçenek Yönetimi Fonksiyonları

Eklentiler genellikle verileri kalıcı olarak saklamaya ihtiyaç duyarlar ve WordPress, basit site ayarlarından özelleştirilmiş veritabanı tablo işlemlerine kadar kapsamlı bir veri yönetim API’si sunar.

Eklentilerin ayarlarını güvenli bir şekilde saklamak ve erişmek

Kullanıcı ayarlarını kaydetmeyi gerektiren eklentiler için, yapılandırma seçeneklerinin WordPress veritabanına kaydedilmesi zorunludur.add_optionget_optionupdate_option Veri yönetiminin temelini oluşturur. Bu fonksiyonlar, belirli veri yapıları üzerinde işlemler yapar. wp_options Tablolar, nispeten basit anahtar-değer çiftleri verilerini saklamak için uygundur.

hosting.com Paylaşımlı Barındırma
AMD EPYC CPU'lar, NVMe SSD depolama ve LiteSpeed ile yüksek performans, 7/24, 7x7 uzman şirket içi destek, SSL, kaba kuvvet, kötü amaçlı yazılım ve DDoS koruması dahil gelişmiş güvenlik önlemleri, 73%'ye kadar tasarruf

Öncelikle, şunları kullanabilirsiniz: add_option Bir başlangıç değeri eklemek için… wp_options Tablo: Bu fonksiyon, seçenek mevcut değilse yalnızca verileri ekler.

add_option( 'my_plugin_api_key', '', '', 'no' ); // ‘no’表示非自动加载

Seçenek değerlerini almak için kullanılır. get_optionÖneri olarak her zaman bir varsayılan değer sağlanmalıdır:

$api_key = get_option( 'my_plugin_api_key', '' ); // 第二个参数为默认值

Güncelleme seçenek değerleri için şu yöntemi kullanın: update_optionEğer bir seçenek mevcut değilse, otomatik olarak oluşturulur.

Tavsiye edilen okuma WordPress eklenti geliştirme rehberi: Profesyonel uzantıları sıfırdan bire kadar oluşturma

update_option( 'my_plugin_api_key', 'new_secret_key_123' );

Dizi veya nesne gibi karmaşık verilerin saklanması gerektiğinde, bu fonksiyonlar otomatik olarak verileri serileştirir ve tekrar deserileştirir.

Özelleştirilmiş bir veritabanı sorgusu çalıştırın.

Eklentilerin ilişkisel verileri veya günlükleri (logları) saklaması gerektiğinde, özel veritabanı tabloları oluşturmak genellikle daha iyi bir seçenektir. Bu durumda, doğrudan WordPress veritabanı soyut sınıflarıyla çalışmak gerekir. $wpdb Etkileşim, güvenli ve standartlaştırılmış bir veritabanı erişim yöntemi sunar.

InterServer Paylaşımlı Barındırma
Paylaşımlı hosting aylık $2.50 USD, ilk ay $0.1 USD promosyon kodu tryinterserver, 461 bulut uygulaması komut dosyası, tek tıklamayla yükleme.

Öncelikle, eklentinin etkinleştirilme işlemi sırasında kullanılacak bir tablo oluşturun. Kullanılan araçların doğru olduğundan emin olun. dbDelta Bu fonksiyon, tablo yapısını güvenli bir şekilde oluşturmak veya güncellemek için kullanılır. Mevcut tablo yapısı ile hedef yapı arasındaki farklılıkları karşılaştırır ve değişiklikleri akıllıca uygular.

global $wpdb;
$table_name = $wpdb->prefix . 'my_plugin_orders';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
    id bigint(20) NOT NULL AUTO_INCREMENT,
    customer_email varchar(100) NOT NULL,
    amount decimal(10,2) NOT NULL,
    order_date datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
    PRIMARY KEY (id),
    KEY customer_email (customer_email)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );

Veri sorgulaması yapılırken, mutlaka kullanılmalıdır. $wpdb->prepare Yöntemlerle ifade hazırlığı yapmak, SQL enjeksiyon saldırılarını önlemenin anahtarıdır:

$results = $wpdb->get_results(
    $wpdb->prepare(
        "SELECT * FROM {$wpdb->prefix}my_plugin_orders WHERE order_date > %s AND amount > %f",
        '2026-01-01 00:00:00',
        100.00
    )
);

İçerik Oluşturma ve Çıkış Fonksiyonu

Eklentiler yalnızca arka planda çalışmakla kalmaz; daha da önemlisi, ziyaretçilere içerik oluşturabilirler. WordPress, HTML’yi güvenli ve esnek bir şekilde oluşturmak, kısa kodları işlemek ve statik kaynakları yönetmek için güçlü fonksiyonlar sunar.

Makalelerde ve sayfalarda dinamik içerik eklemek

Kısa kodlar, kullanıcıların makaleler ve sayfalara dinamik içerik eklemesine olanak tanır ve bu da eklentilerin kullanım kolaylığını artıran önemli bir özelliktir. add_shortcode Fonksiyonlar sayesinde kendi kısa kodlarınızı kolayca oluşturabilirsiniz.

add_shortcode Fonksiyon, iki parametre alır: kısa kod etiketi ve işleme fonksiyonu. İşleme fonksiyonu, doğrudan çıktı vermek yerine HTML içeriği döndürmelidir; bu da WordPress’in “önce çek, sonra renderle” ilkesine uygundur.

add_shortcode( 'recent_posts', 'my_plugin_render_recent_posts' );
function my_plugin_render_recent_posts( $atts ) {
    // 解析属性,设置默认值
    $attributes = shortcode_atts( array(
        'count' => 5,
        'category' => ''
    ), $atts );

// 根据属性查询文章逻辑...
    $output = '<ul class="recent-posts">';
    // ... 生成列表项
    $output .= '</ul>';
    return $output;
}

Kullanıcıların yapması gereken tek şey, düzenleyicide ilgili içeriği girmektir. [recent_posts count="3"] Böylece en son makaleler listesi görüntülenebilir.

Değişken değerlerini güvenli bir şekilde HTML’e yazdırın.

Eklentilerin sayfada değişkenleri (örneğin veritabanından alınan metin veya ayarlar) görüntülemesi gerektiğinde, bunları doğrudan kullanabilirsiniz. echo String birleştirmeleri, kötü niyetli kodların (cross-site scripting – XSS) çalıştırılmasına neden olabilir. WordPress, çıktının güvenli olmasını sağlamak için özel escape (kaçırma) fonksiyonları sunar.

HTML etiket öznitelikleri içinde çıktı vermek için kullanılır. esc_attr Function:

echo '<input type="text" value="' . esc_attr( get_option( 'site_title' ) ) . '">';

HTML etiketlerinin içerik kısmında çıktı vermek için kullanılır. esc_html

`echo '`'<h1>'`. esc_html($post_title)`.'</h1>';

Güvenli olduğu doğrulanmış HTML içeriği için (örneğin, belirli güvenlik kontrollerinden geçmiş içerikler için)… wp_kses_post (Filtrelenmiş), ancak tam URL’nin çıktısını almak gerekiyor; bunun için kullanılabilir. esc_url

`echo '`'<a href="/tr/' . esc_url( $external_link ) . '/">bağlantı (bir web sitesinde)</a>';

JavaScript kod bloğunda PHP değişkenlerini çıktırmak için kullanılmalıdır. wp_json_encode Ve bununla birlikte… esc_js

<script>
var pluginSettings = <?php echo wp_json_encode( $settings_array ); ?>;
var message = '<?php echo esc_js( $user_message ); ?>';
</script>

Dosya ve Medya İşleme Fonksiyonları

Birçok eklenti, dosya yüklemesi, görüntü işleme veya temalar/eklentilerin içindeki dosyalara erişimle ilgilidir. WordPress, karmaşık sunucu yollarını ve URL mantığını gizler ve basit bir API seti sunar.

Eklenti veya temanın içindeki kaynakların mutlak yolunu almak

Eklenti geliştirme sürecinde, sık sık kendi dizininizde bulunan CSS, JavaScript veya resim dosyalarına atıfta bulunmak gerekebilir. Sabit, kodlanmış mutlak path’ler kullanmak oldukça güvensizdir; çünkü web sitesi taşınabilir. WordPress bu durum için çözümler sunar. plugin_dir_pathplugins_url Bir fonksiyon, yolu dinamik olarak oluşturmak için kullanılır.

plugin_dir_path Sunucunun dosya sistemi yolunu, eklenti dizinine dönen; yolun sonunda bir çizgi (/) bulunur. Bu, şu durumlar için uygundur: includerequire Dosya:

$config_path = plugin_dir_path( __FILE__ ) . 'config/config.php';
if ( file_exists( $config_path ) ) {
    require_once $config_path;
}

plugins_url Bu, tarayıcı aracılığıyla erişilebilen URL’ler oluşturmak için kullanılır ve `` içinde yer alır.

Gerekli Fonksiyonlar ve Yöntemler Analizi - LikaCloud

Kaynakça:

$css_url = plugins_url( 'assets/css/admin-style.css', __FILE__ );
wp_enqueue_style( 'my-admin-style', $css_url );

Konu geliştiricileri için ilgili fonksiyon şudur: get_template_directory_uriget_stylesheet_directory_uri

Kullanıcıların yüklediği medya dosyalarını işleme

Eğer eklenti kullanıcıların dosya yüklemesine izin veriyorsa, bu dosyaları asla doğrudan kullanmamalısınız. $_FILES Küresel diziler (global arrays) ve… move_uploaded_file WordPress’te medya işleme için kullanılan fonksiyonlar wp_handle_upload Tam bir güvenlik kontrolü ve dosya yönetimi entegrasyonu sunulmuştur.

Bu fonksiyon, dosya türü kontrolünü, yeniden adlandırmayı (dosyaların üzerine yazılmasını önlemek için), hata işlemlerini otomatik olarak gerçekleştirir ve dosyaları WordPress medya kütüphanesinin dizin yapısına taşır.

$uploadedfile = $_FILES['my_plugin_upload'];
$upload_overrides = array( 'test_form' => false );
$movefile = wp_handle_upload( $uploadedfile, $upload_overrides );

if ( $movefile && ! isset( $movefile['error'] ) ) {
    // 文件上传成功
    $file_url = $movefile['url'];
    $file_path = $movefile['file'];
    // 可以将 $file_url 存入数据库
} else {
    // 上传失败,输出错误信息
    echo $movefile['error'];
}

Yüklenen dosyaları WordPress medya kütüphanesine daha da entegre etmek için ayrıca şunlar da kullanılabilir: wp_insert_attachment Bu fonksiyon, bir ekli gönderi oluşturur; böylece WordPress’in yerleşik görüntü işleme özelliklerinden (örneğin, küçük resimler oluşturma) yararlanılabilir.

Özetle.

WordPress’in temel fonksiyonlarını ve yöntemlerini öğrenmek, eklentiler ve temalar geliştirirken verimli ve güvenli bir şekilde çalışmanın temelidir. Hook sistemiyle başlayarak…add_action, add_filterModülerliği gerçekleştirin ve veritabanı işlemlerine geçin.$wpdb, get_optionVerilerin kalıcı hale getirilmesini sağlayın, ardından içeriğin çıktısını oluşturun.add_shortcode, esc_htmlGüvenlik ve güvenli işleme (Security and Safe Handling)wp_handle_uploadHer bir fonksiyon grubu, belirli senaryolar için binlerce kez test edilmiş ve geliştirilmiş çözümler sunar. Geliştiriciler, bu fonksiyonların parametrelerini, döndürdüğü değerleri ve en iyi kullanım yöntemlerini derinlemesine anlamalıdır. Böylece tekrar aynı işleri yapmaktan veya güvenlik açıklarına yol açacak hatalardan kaçınarak hem güçlü hem de güvenilir WordPress eklentileri oluşturabilirler.

Sıkça Sorulan Sorular.

`add_action` ve `add_filter` fonksiyonlarının temel farkı nedir?

İkisi arasındaki temel fark, kullanım amacı ve geri çağırma fonksiyonlarının (callback functions) beklenen davranışlarındadır.add_action Bir olay meydana geldiğinde “belirli bir işlemi gerçekleştirmek” için kullanılır; geri çağırma fonksiyonu genellikle bir değer döndürmez, sadece belirli bir işlemi yürütür (örneğin e-posta göndermek, günlük kaydı yapmak). add_filter “Bir veriyi değiştirmek” için kullanılır; geri çağırma fonksiyonu mutlaka bir girdi değeri almalı ve değiştirilmiş değeri döndürmelidir. Teknik olarak bakıldığında, ikisi de aynıdır; ancak semantik farklılıklar kodun okunabilirliğini artırır.

$wpdb sınıfını kullanırken, neden mutlaka `prepare` metodunu kullanmak zorundayız?

$wpdb->prepare Yöntemler, SQL enjeksiyon saldırılarına karşı savunmanın temel unsurlarıdır. Yer tutucular (stringler için %s, tamsayılar için %d, ondalık sayılar için %f) kullanarak değişkenleri alır ve bu değişkenlerin SQL ifadelerine eklenmeden önce doğru şekilde dönüştürülüp biçimlendirildiğinden emin olur. Değişkenlerin güvenli bir kaynaktan geldiğinden emin olsanız bile (örneğin bir veritabanından alınmış olsalar bile)… get_optionİşte, kullanma talimatları. prepare Aynı zamanda uygulanması gereken iyi bir alışkanlıktır; bu alışkanlık, kodun gelecekteki değişikliklere veya karmaşık durumlara karşı hala sağlam kalmasını sağlar.

`esc_html` ve `esc_attr` fonksiyonları birbirinin yerine kullanılabilir mi?

Bazı basit durumlarda bu iki fonksiyonun yer değiştirmesi hemen bir hata oluşturmasa da, bunun yapılması şiddetle önerilmez. Bu iki fonksiyon, farklı HTML bağlamları için optimize edilmiştir.esc_html HTML etiketlerinin içindeki içeriği dönüştürmek için kullanılır; bu işlem, etiketlerin özel anlamlarını korur. <>&"' Bu karakterlerin HTML özel karakterlerine (entitylerine) dönüştürülmesi gerekiyor. esc_attr Özellikle HTML etiket özniteliklerindeki değerleri dönüştürmek için kullanılır ve öznitelik değerlerinin tırnaklarla çevrili olabileceği durumları da dikkate alır. Doğru fonksiyonu kullanmak, tüm olası durumlarda güvenli bir dönüştürme işlemi yapılmasını sağlar.

`plugin_dir_path(FILE)` ifadesindeki `FILE` sabiti ne anlama gelir?

FILE Bu, PHP’de bir “sihirli sabit” (magic constant)dir ve mevcut olarak çalıştırılan betiğin dosya sistemindeki tam yolunu ve dosya adını temsil eder. Eklentinin ana dosyasında kullanılır. plugin_dir_path(FILE)Bu sayede, eklentinin dizininin mutlak yolunu dinamik ve doğru bir şekilde elde edebilirsiniz; eklenti nerede kurulmuş olursa olsun. Bu, sabit olarak kodlanmış yollar kullanmaktan çok daha güvenilirdir ve eklentinin farklı sunucu ortamlarında taşınabilirliğini sağlar. Tema geliştirme sürecinde de benzer sabitler sıkça kullanılır. DIR veya fonksiyon get_template_directory() Aynı rolü üstleniyorlar.