Kendi WordPress eklentinizi nasıl oluşturabilirsiniz?
Yayınlanan: 2016-07-13Bir WordPress eklentisi oluşturmak büyük bir girişim gibi görünebilir. Bazı durumlarda bu doğrudur – bazı eklentiler inanılmaz derecede karmaşık olabilir. Ancak eklemek istediğiniz işlevselliğe bağlı olarak, birçoğunun oluşturulması oldukça basittir. Bir eklenti oluşturmak, hepsinin nasıl çalıştığına dair bazı temel anlayışlarla hızlı bir şekilde yapılabilir.
Eklentiler nereye gider?
WordPress klasör yapısı
Geliştirme başlamadan önce, eklentilerin nereye ait olduğunu bilmek iyidir. Temel uygulama dizinlerindeki WordPress klasör yapısına bir göz atalım. wp-content klasörünün içinde bir eklenti dizini göreceksiniz. Burası, tüm bireysel eklentilerinizin yaşayacağı yerdir.
Bu klasördeki eklentiler tek dosya veya alt dizinlerde olabilir. Daha küçük eklentiler genellikle yalnızca tek bir .php dosyası gerektirir. Karmaşık eklentilerin birden fazla dosya türü olabilir (HTML, CSS ve JavaScript'in tümü olasılıklardır). Bir alt dizin oluşturmak, eklentinin .php işlevleriyle birlikte çeşitli dosyaları barındırmak için yararlıdır.

Eylemler ve filtreler
Eklenti oluşturmaya başlamadan önce, başlamanıza yardımcı olacak bazı temel bilgileri bilmekte fayda var. Kendi eklentilerinizi kodlamaya başladığınızda, başlamak için iyi bir yer, eylemlerin ve filtrelerin nasıl çalıştığını öğrenmektir. Temel bilgileri bilmek yardımcı olacaktır ve bununla ilgili daha fazla sorunuz olduğu için WordPress Kodeksi harika bir kaynaktır.
Eklenti geliştirmeden önce
Meta bilgi inanılmaz derecede önemlidir ve aynı zamanda WordPress'e eklenti hakkında ayrıntılı bilgi veren bilgilerdir. Eklentilerin kurulma, silinme, etkinleştirilme ve devre dışı bırakılma seçenekleri vardır. Teknik olarak, dosyanızı bir eklenti olarak kurmak için ihtiyacınız olan tek şey WordPress'in eklenti adıdır. Ancak, size ve kullanıcılarınıza yardımcı olacağı için diğer bilgileri sağlamak iyi bir uygulamadır.
<?php /** * Plugin Name: Example Plugin * Plugin URI: http://mysite.com/ * Description: A brief description about your plugin. * Version: 1.0 (or whatever current version your plugin is on) * Author: Plugin Author's Name * Author URI: Author's website * License: A "Slug" license name e.g. GPL12 */
Çok basit bir eklenti
Küçükten başlamak, eklenti oluşturmayı kolaylaştırmak için iyi bir yoldur. Çok basit bir örnek oluşturalım. Eylemler ve filtreler bir şeylerin olmasını sağlar, o yüzden tüm gönderilerden sonra bir şeyler test etmek için bir metin satırı ekleyelim.
Bir geliştirme ortamında çalışmak her zaman iyidir ve bu, özellikle eklentilerle denemeler yaparken önemlidir.
Öncelikle yeni bir dosya oluşturun ve doğru yerde olduğundan emin olun. Bu kodu kopyalayıp ana eklenti dosyanıza yapıştırın ve kaydedin. Bu, meta bilgisinden sonra yapıştırılır.
add_action( 'the_content', 'test_example_text' );
function test_example_text ( $content ) {
return $content .= '<p>This is my first plugin!</p>';
}
Bu, iş başında bir kanca örneğidir. the_content eylemine bağlanarak bu, WordPress gönderi içeriğini oluşturduğunda çalışır. WordPress, add_action çağrısının altında tanımlanan test_example_text işlevini add_action call .
Eklentiyi çalışırken görmek
Bunu muhtemelen daha önce yapmışsınızdır, ancak WordPress yöneticisine giriş yaptığınızda sol tarafta eklenti seçeneğini göreceksiniz. Eklentimiz ortaya çıkıyor ve şimdi etkinleştirilmesi gerekiyor. Etkinleştirildiğinde, gönderinin sonunda görünür.


Daha karmaşık bir eklenti
Bu örnek, eklentilerin nasıl çalıştığının temellerini gösteriyor, peki ya biraz daha faydalı bir şey yapmak istiyorsanız? Özel gönderi türleri, özel site tasarımında oldukça sık kullanılır, o yüzden başlayalım. Kullanabileceğiniz mevcut eklentiler var, ancak sıfırdan bir eklenti oluşturmak, eklenti geliştirmeyi kolaylaştırmak için iyi bir yoldur.
WordPress'te özel gönderi türü nedir?
Sayfalar ve gönderiler, WordPress'teki en popüler içerik türleridir, ancak ya daha spesifik bir şey istiyorsanız? Sayfalar ve Gönderiler bazı durumlarda çok genel olabilir, bu nedenle özel bir gönderi türü kullanışlı hale gelir. Buna iyi bir örnek, özel bir gönderi türü portföyüdür. Buradaki fikir, kendisine eklenmiş farklı bir gönderi türü değerine sahip normal bir gönderi oluşturmaktır.
WordPress'te bir portföy sitesi nasıl oluşturulur
Bir web sitesinde portföy sayfası olması pek çok şey için kullanılabilir. Tanım olarak, kağıtlar, haritalar, çizimler, fotoğraflar vb. gibi materyalleri tutmak için kullanılan bir şeydir. Finans terimleriyle bir portföy...
Özel gönderi türlerinizi istediğiniz gibi arayabilirsiniz. Örneğin, bir yemek sitesi işletiyorsanız, kullanışlı bir yemek tarifi gönderi türü oluşturabilirsiniz. Bu gönderi türü, kendi özel kategori yapısıyla farklı özel alanlara sahip olabilir.
Özel gönderi türleri oluşturma
Yapmanız gereken ilk şey, aslında özel gönderi türünü oluşturmaktır. Yukarıdan aynı dosya yapısını kullanarak klasörümüzü ve .php dosyamızı ekleyelim. Meta bilgilerinin oluşturulduğunu varsayarsak, meta bloktan sonra işlevselliğimizi ekleyeceğiz.
Daha karmaşık bir eklenti oluşturmanın temellerini göstermek için "Tarifler" adlı özel bir gönderi türü için bir eklenti oluşturacağız.
temel sürüm
Aşağıdaki parçaya bir göz atarsanız, başlangıçta oldukça basittir. Bunun çalıştığından emin olmak için sol menüde özel bir gönderi türü göreceğiz. register_post_type() , init eylemine bağlanan bir işlevde kullanılır. Özel gönderi türü ve bir argüman dizisi olmak üzere iki argüman vardır.
function recipe_custom_post_type() {
register_post_type( 'recipe', array( 'public' => true, 'label' => 'Recipes' ) );
}
add_action( 'init', 'recipe_custom_post_type' );


gelişmiş sürüm
Eklentinin bu temel sürümü gerçekten çalışacak, ancak onu gerçekten harika hale getirmek için daha fazla işlevsellik gerekiyor. Örneğin, etiketler hala "Yeni gönderi ekle"yi okuyor. Bunun daha çok tarife özel olmasını istiyoruz; Sonuçta, bu yüzden sadece düz bir gönderi kullanmıyoruz. Etiketler özelliği kullanılarak özelleştirmeler yapılabilir.

Şimdi, az önce yaptığımız şeyi çizelim ve bunun yerine bunu kullanalım:
add_action( 'init', 'recipe_custom_post_type' );
add_filter( 'post_updated_messages', 'recipes_messages' );
function recipe_custom_post_type() {
$labels = array(
'name' => 'Recipes',
'singular_name' => 'Recipe',
'menu_name' => 'Recipe',
'name_admin_bar' => 'Recipe',
'add_new' => 'Add New',
'add_new_item' => 'Add New Recipe',
'new_item' => 'New Recipe',
'edit_item' => 'Edit Recipe',
'view_item' => 'View Recipe',
'all_items' => 'All Recipes',
'search_items' => 'Search Recipes',
'parent_item_colon' => 'Parent Recipes:',
'not_found' => 'No recipes found.',
'not_found_in_trash' => 'No recipes found in Trash.'
);
$args = array(
'public' => true,
'labels' => $labels,
'rewrite' => array( 'slug' => 'recipe' ),
'has_archive' => true,
'menu_position' => 20,
'menu_icon' => 'dashicons-carrot',
'taxonomies' => array( 'post_tag', 'category' ),
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'custom-fields', 'comments' )
);
register_post_type( 'recipe', $args );
}
function recipes_messages( $messages ) {
$post = get_post();
$messages['recipe'] = array(
0 => '',
1 => 'Recipe updated.',
2 => 'Custom field updated.',
3 => 'Custom field deleted.',
4 => 'Recipe updated.',
5 => isset( $_GET['revision'] ) ? sprintf( 'Recipe restored to revision from %s',wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
6 => 'Recipe published.',
7 => 'Recipe saved.',
8 => 'Recipe submitted.',
9 => sprintf(
'Recipe scheduled for: <strong>%1$s</strong>.',
date_i18n( 'M j, Y @ G:i', strtotime( $post->post_date ) )
),
10 => 'Recipe draft updated.'
);
return $messages;
}

En üstteki metnin şimdi nasıl "Yeni Tarif Ekle" yazdığını gördünüz mü? Bunu, "yeni öğe ekle"yi istenen metinle özelleştirerek gerçekleştirdik.


Burada çok şey oluyor ve argümanlarla çalışırken işler oldukça ayrıntılı hale geliyor. Görsel olarak bariz olan bir tanesi supports özelliğidir. Burada bir başlık, editör, yazar, küçük resim, alıntı, özel alanlar ve yorumların dahil edileceğini beyan ettik. Bunlar, yönetici kullanıcı arayüzünde ve ön ucun bazı bölümlerinde de gösterilir. Taksonomiler özelliği, özel gönderi türüne özel taksonomiler atamanıza olanak tanır.

Yazı tipi etkileşim mesajları
Kaydettiğinizde, sildiğinizde, aradığınızda vs. varsayılan bir mesaj alırsınız. recipes_messages fonksiyonumuzda bu mesajların bir listesi bulunmaktadır. Özel gönderi türü için diziyi uygun mesajlarla tanımlamak, işlerin özel gönderi türü için istediğiniz gibi okunmasını sağlar. İşler, ifadelerle çok reçeteye özgü görünüyor, bu nedenle bu, özel gönderi türüyle iyi gidiyor.

Eklentinizi tamamladıktan sonra, başkalarının da indirebilmesi için WordPress Eklenti Dizininde yayınlayabilirsiniz. Bu durumda, readme.txt sizinki gibi bir eklenti arayanlar için yararlıdır. Temel olarak, bu dosya adınızı ve eklentinin ne yaptığını içerecektir, ancak her revizyonla ilgili ayrıntıları ve güncellemelerle ilgili ayrıntıları da ekleyebilirsiniz.
Gördüğünüz gibi, eklentiler çok basit veya karmaşık olabilir. Bir eklenti oluşturmak ilk bakışta göründüğü kadar zor değildir ve WordPress siteleri geliştirirken içine girmek için iyi bir alışkanlıktır. Kolay organizasyona ve birden fazla sitede yeniden kullanma becerisine izin vererek WordPress geliştirmenizi daha verimli hale getirir.

