Blog
WordPress Kanca Mimarisi: Eylemler ve Filtreler Açıklaması
Her harika eklentinin temeli. Bakımı yapılabilir, ölçeklenebilir kod oluşturmak için PAGEnza AI'nin kancaları ve filtreleri nasıl kullandığını öğrenin.
Her WordPress eklentisi iki şeyden birini yapar: belirli bir anda kod çalıştırır (eylem) veya kullanılmadan önce bir değeri değiştirir (filtre). Hepsi bu. Tüm WordPress eklenti ekosistemi bu ayrım üzerine kuruludur.
Aradaki farkı — ve hangisini ne zaman kullanacağınızı — anlamak, çalışan eklentilerle sorun yaratan eklentileri ayıran şeydir.
Eylemler: belirli bir anda bir şey yapın
Bir eylem kancası, WordPress'in (veya başka bir eklentinin) belirli bir anda gönderdiği bir sinyaldir. Bu sinyale bir fonksiyon eklersiniz ve sinyal tetiklendiğinde fonksiyonunuz çalışır.
add_action( 'wp_enqueue_scripts', 'my_plugin_load_assets' );
function my_plugin_load_assets() {
wp_enqueue_style( 'my-plugin', plugin_dir_url( __FILE__ ) . 'style.css' );
wp_enqueue_script( 'my-plugin', plugin_dir_url( __FILE__ ) . 'script.js', ['jquery'], '1.0', true );
}
wp_enqueue_scripts, WordPress ön uç için varlıkları yüklemeye hazırlanırken tetiklenir. Buna bağlanmak, CSS ve JS yüklemenin doğru yoludur — şablonlara doğrudan <script> etiketleri bırakmak değil.
Sürekli kullanacağınız yaygın eylem kancaları:
init— erken çalışır, özel türleri ve taksonomileri kaydetmek için iyidirwp_enqueue_scripts— ön uç varlıklarını yükleyinadmin_enqueue_scripts— yönetici varlıklarını yükleyinsave_post— bir gönderi kaydedildiğinde çalışır, özel alanları işlemek için iyidirwp_ajax_{action}— kimliği doğrulanmış kullanıcılardan AJAX isteklerini işleyinwp_ajax_nopriv_{action}— oturum açmamış kullanıcılardan AJAX'ı işleyin
Filtreler: kullanılmadan önce bir değeri değiştirin
Bir filtre kancası size bir değer verir, onu değiştirmenize izin verir ve değiştirilmiş sürümü döndürmenizi bekler. WordPress daha sonra orijinal değeri yerine değiştirilmiş değeri kullanır.
add_filter( 'the_content', 'my_plugin_append_cta' );
function my_plugin_append_cta( $content ) {
if ( ! is_single() ) {
return $content;
}
$cta = '<div class="post-cta">PAGEnza'yı denemeye hazır mısınız? <a href="#">Ücretsiz başlayın →</a></div>';
return $content . $cta;
}
Kritik kural: her zaman bir filtreden bir şey döndürün. return'u unutursanız, değer null olur ve onu kullanan her şeyi bozmuş olursunuz.
Yaygın filtre kancaları:
the_content— görüntülemeden önceki gönderi içeriğithe_title— gönderi başlığıwp_nav_menu_items— gezinme menüsü HTML'siupload_mimes— izin verilen dosya yükleme türleriplugin_action_links_{plugin-file}— eklentiler listesi sayfasında gösterilen bağlantılar
PAGEnza AI kancaları nasıl kullanır
Plugin Builder bir eklenti oluşturduğunda, kodu oluşturucudaki kancalara eklenmiş yöntemlere sahip bir sınıf etrafında yapılandırır. Bu desen, küresel fonksiyon adı çakışmalarını önler ve kodu düzenli tutar.
class My_Plugin {
public function __construct() {
add_action( 'init', [ $this, 'register_post_type' ] );
add_action( 'wp_enqueue_scripts', [ $this, 'load_assets' ] );
add_filter( 'the_content', [ $this, 'append_content' ] );
}
public function register_post_type() { /* ... */ }
public function load_assets() { /* ... */ }
public function append_content( $content ) {
// her zaman döndür
return $content;
}
}
new My_Plugin();
Güvenlik taraması, AJAX işleyicilerinin herhangi bir işlem yapmadan önce hem bir nonce kontrolü hem de bir yetenek kontrolü içerdiğini özellikle kontrol eder:
add_action( 'wp_ajax_my_action', [ $this, 'handle_ajax' ] );
public function handle_ajax() {
// Güvenlik: nonce'u doğrula
check_ajax_referer( 'my_nonce_action', 'nonce' );
// Güvenlik: izinleri doğrula
if ( ! current_user_can( 'manage_options' ) ) {
wp_send_json_error( 'Yetersiz izinler', 403 );
}
// Şimdi işlemek güvenli
$data = sanitize_text_field( $_POST['data'] ?? '' );
wp_send_json_success( [ 'result' => $data ] );
}
Bunlardan birinin eksik olması güvenlik sorunu olarak işaretlenir ve eklentinin yayınlanmasını engeller.
Öncelik ve kanca kuyruğu
Aynı kancaya birden fazla fonksiyon eklendiğinde, öncelik sırasına göre çalışırlar (daha düşük sayı = önce çalışır). Varsayılan öncelik 10'dur.
add_action( 'init', 'runs_first', 5 );
add_action( 'init', 'runs_second', 10 ); // varsayılan
add_action( 'init', 'runs_last', 20 );
Bu, eklentinizin başka bir eklentinin kodundan önce veya sonra çalışması gerektiğinde önemlidir. Başka bir eklentinin de değiştirdiği bir şeyi değiştiriyorsanız, öncelik kimin kazanacağını kontrol eder.
Yaygın bir desen: bir temanın filtresini geçersiz kılıyorsanız, temanın kodundan sonra çalıştığından emin olmak için 20 veya daha yüksek bir öncelik kullanın.
Kancaları kaldırma
Başkası tarafından eklenen bir kancayı kaldırabilirsiniz — tema ve eklenti kancaları dahil:
remove_action( 'wp_head', 'wp_generator' ); // <head>'den WP sürümünü kaldırır
remove_filter( 'the_content', 'wpautop' ); // otomatik paragraf sarmalamayı kaldırır
Engeli: bir kancayı yalnızca orijinal add_action/add_filter çalıştıktan sonra remove_action/remove_filter çağırırsanız kaldırabilirsiniz. Bu genellikle kaldırmanızı daha sonraki bir eyleme bağlamayı gerektirir.