Eklenti geliştirme için en iyi uygulamaları toplamak için objektif bir topluluk wiki başlatmak. Bu soru @ EAMann'ın wp-hacker'lara yaptığı yorumlardan ilham aldı .
Buradaki fikir, hangi objektif en iyi uygulamaların olabileceği konusunda işbirliği yapmaktır, böylece bunları potansiyel olarak bazı topluluk işbirliği inceleme süreçlerinde kullanabiliriz.
GÜNCELLEME: İlk birkaç yanıtı gördükten sonra, cevap başına sadece bir fikir/öneri/en iyi uygulamaya sahip olmamız gerektiği ve insanların cevapsız kaldığından emin olmak için listeyi gözden geçirmesi gerektiği anlaşılıyor. göndermeden önce çoğaltır.
wp_enqueue_script
ve wp_enqueue_style
ile yükleyinEklentiler JS/CSS dosyalarının, özellikle jQuery ve WP Core içindeki diğer JS dosyalarının kopya versiyonlarını yüklememeli/denememelidir.
Eklentiler, JS ve CSS dosyalarını bağlarken daima wp_enqueue_script
ve wp_enqueue_style
kullanmalı ve asla doğrudan <script>
etiketleri ile kullanmamalıdır.
Geliştiricinin kendi eklentisini çevirme konusunda ilgisi olmasa bile, tüm çıkış dizeleri, ilgili taraflarca uluslararasılaşmaya izin vermek için uygun bir metin alanına bağlanmalıdır.
Dil dosyalarını init
işlemi sırasında yüklemenin çok önemli olduğunu ve böylece kullanıcının eyleme bağlanabileceğini unutmayın.
Kodeks'e bakınız: WordPress Geliştiricileri için I18n
Ve ayrıca bu yazı: Yükleniyor WP dili doğru dosyaları .
WP 4.6 yük sırasını ve kontrol edilen yerleri değiştirdi, geliştiriciler ve kullanıcılar için çok daha kolay hale geldi.
'My-plugin' adlı bir textdomain eklentisini göz önünde bulundurarak, WordPress şimdi FIRST:
/wp-content/languages/plugins/my-plugin-en_US.mo
Eğer orada bir tane bulamazsa, o zaman eklentinin aramasını söylediği birini arayacaktır (kodeksi izlerseniz, genellikle 'dil' klasöründeki eklentilerde):
/wp-content/plugins/my-plugin/languages/my-plugin-en_US.mo
Son olarak, eğer bir dil dosyası bulunamazsa, varsayılan konumlarını kontrol edecektir:
/wp-content/languages/my-plugin-en_US.mo
İlk kontrol 4.6'da eklendi ve kullanıcılara dil dosyasını eklemek için tanımlı bir yer verdi, çünkü geliştiricinin dil dosyasını nereye eklediğini bilmeleri gerekiyordu, şimdi kullanıcının sadece eklentinin metin alanını bilmesi gerekiyor: / wp- içerik/diller/eklentiler/TEXTDOMAIN-LOCAL.mo
[...]
Son olarak, [] eklentisini içeren dil dosyalarını yüklemeden önce özel kullanıcı dil dosyalarının WP_LANG_DIR adresinden yüklenmesinin önemli olduğunu belirtmek isterim. Aynı etki alanı için birden fazla mo dosyası yüklendiğinde, ilk bulunan çeviri kullanılacaktır. Bu şekilde, eklenti tarafından sağlanan dil dosyaları, kullanıcı tarafından çevrilmeyen dizeler için bir geri dönüş görevi görür.
public function load_plugin_textdomain()
{
$domain = 'my-plugin';
// The "plugin_locale" filter is also used in load_plugin_textdomain()
$locale = apply_filters( 'plugin_locale', get_locale(), $domain );
load_textdomain(
$domain,
WP_LANG_DIR . '/my-plugin/' . $domain . '-' . $locale . '.mo'
);
load_plugin_textdomain(
$domain,
FALSE,
dirname( plugin_basename(__FILE__) ) . '/languages/'
);
}
Eklentilerinizi her zaman WP_DEBUG
open ile test edin ve geliştirme süreciniz boyunca ideal olarak açık konuma getirin. Bir eklenti WP_DEBUG
on ile HİÇBİR hata atmamalıdır. Bu, kullanımdan kaldırılmış bildirimleri ve işaretlenmemiş dizinleri içerir.
Hata ayıklamayı açmak için wp-config.php
dosyanızı, WP_DEBUG
sabitinin true
olarak ayarlanması için düzenleyin. Daha fazla ayrıntı için Hata ayıklamadaki Kodeks bölümüne bakın.
Yapabilecekleriniz: kendiniz yazmak yerine WordPress çekirdeğinde bulunan mevcut işlevleri kullanın. WordPress çekirdeğinde önceden uygun bir işlev olmadığında yalnızca özel PHP işlevleri geliştirin.
Bunun bir yararı, değiştirilmesi gereken işlevleri kolayca izlemek için "kullanımdan kaldırılmış bildirimleri günlüğe kaydet" kullanabilirsiniz. Diğer bir avantaj, kullanıcıların işlev belgelerini Kodeks'te görüntüleyebilir ve deneyimli bir PHP geliştiricisi olmasa bile eklentinin ne yaptığını daha iyi anlamalarıdır.
Bir WordPress kurulumundan çıkarıldıktan sonra bir eklentinin oluşturduğu tüm dosyaları, klasörleri, veritabanı girişlerini ve tabloları oluşturduğu seçenek değerlerini silmesi gerekir.
Eklentiler, ayarları dışa aktarma/içe aktarma seçeneği sunabilir, böylece ayarlar silinmeden önce WordPress'in dışına kaydedilebilir.
Bir eklenti olmalıdır MySQL veritabanını sorgulamak için giriş değerlerini kullanmadan önce doğrudan veya dolaylı olarak alınan tüm kullanıcı girişlerini (örneğin, $_POST
veya $_GET
) yoluyla temizleyin.
Bakınız: SQL deyimlerini biçimlendirme .
Temiz, nesne yönelimli PHP5 kodu yazmamak için hiçbir sebep yoktur. PHP4 desteği bir sonraki sürümden sonra sona erecektir (WP 3.1). Tabii ki, tüm işlev isimlerinizi endlessly_long_function_names_with_lots_of_underscores ile bitirin, ancak basit bir sınıf yazmak ve içindeki her şeyi paketlemek çok kolaydır. Ayrıca, sınıfınızı ayrı bir dosyaya koyun ve buna göre adlandırın böylece kolayca genişletip devam ettirebilirsiniz:
// in functions.php
require 'inc/class-my-cool-plugin.php';
new MyCoolPlugin();
// in inc/class-my-cool-plugin.php
class MyCoolPlugin {
function __construct() {
// add filter hooks, wp_enqueue_script, etc.
// To assign a method from your class to a WP
// function do something like this
add_action('admin_menu', array($this, "admin"));
}
public function admin() {
// public methods, for use outside of the class
// Note that methods used in other WP functions
// (such as add_action) should be public
}
private function somethingelse() {
// methods you only use inside this class
}
}
Bir eklenti, TÜM global ad alanı öğelerini (sabitler, işlevler, sınıflar, değişkenler, hatta özel taksonomiler, posta tipleri, widget'lar, vb. Gibi) öneklemelidir. Örneğin, init()
adında bir işlev oluşturmayın; bunun yerine, jpb_init()
gibi bir şey adlandırın.
Yaygın olarak adların önünde üç veya dört harfli bir ön ek kullanılmalı veya PHP Ad Alanı Özelliği kullanılmalıdır. Karşılaştırma: PHP sınıf sabitleri için tek harfli ön ek?
Bir eklenti olmamalıdevre dışı bırakmaüzerine verilerinin silinmesi.
Sadece ihtiyacınız olan dosyaları ekleyin ...
Ön taraftaysanız, yönetici alanıyla ilgili kodu eklemeyin.
Kaldırma üzerine bir eklenti gerekirBir kullanıcıya, verilerini sileceği hakkında bilgi isteyin ve kullanıcının bunu yapmadan önce verileri silmesinde sorun olmadığını ve bir eklenti gerekir ayrıca kullanıcının verileri saklama seçeneğine izin ver kaldırma işleminden sonra. (Bu fikir @EAMann'dan.)
Bazı kullanıcı girişi yanlışsa sadece return;
yapmayın. Onlara biraz bilgi verilmesi yanlış yapıldı.
function some_example_fn( $args = array() )
{
// If value was not set, build an error message
if ( ! isset( $args['some_value'] ) )
$error = new WP_Error( 'some_value', sprintf( __( 'You have forgotten to specify the %1$s for your function. %2$s Error triggered inside %3$s on line %4$s.', TEXTDOMAIN ), '$args[\'some_value\']', "\n", __FILE__, __LINE__ ) );
// die & print error message & code - for admins only!
if ( isset( $error ) && is_wp_error( $error ) && current_user_can( 'manage_options' ) )
wp_die( $error->get_error_code(), 'Theme Error: Missing Argument' );
// Elseif no error was triggered continue...
}
Önyükleme sırasında temanız veya eklentiniz için genel bir hata nesnesi ayarlayabilirsiniz:
function bootstrap_the_theme()
{
global $prefix_error, $prefix_theme_name;
// Take the theme name as error ID:
$theme_data = wp_get_theme();
$prefix_theme_name = $theme_data->Name;
$prefix_error = new WP_Error( $theme_data->Name );
include // whatever, etc...
}
add_action( 'after_setup_theme', 'bootstrap_the_theme' );
Daha sonra talep üzerine sınırsız Hata ekleyebilirsiniz:
function some_theme_fn( $args )
{
global $prefix_error, $prefix_theme_name;
$theme_data = wp_get_theme();
if ( ! $args['whatever'] && current_user_can( 'manage_options' ) ) // some required value not set
$prefix_error->add( $prefix_theme_name, sprintf( 'The function %1$s needs the argument %2$s set.', __FUNCTION__, '$args[\'whatever\']' ) );
// continue function...
}
Sonra temanın sonunda hepsini getirebilirsin. Bu sayede sayfayı oluşturmayı kesmezsiniz ve geliştirme için tüm hatalarınızı yine de verebilirsiniz
function dump_theme_errors()
{
global $prefix_error, $prefix_theme_name;
// Not an admin? OR: No error(s)?
if ( ! current_user_can( 'manage_options' ) ! is_wp_error( $prefix_error ) )
return;
$theme_errors = $prefix_error->get_error_messages( $prefix_theme_name );
echo '<h3>Theme Errors</h3>';
foreach ( $theme_errors as $error )
echo "{$error}\n";
}
add_action( 'shutdown', 'dump_theme_errors' );
Daha fazla bilgiyi bu Q adresinde bulabilirsiniz. WP_Error
ve wp_die()
öğelerinin "birlikte çalışmasını" düzeltmek için ilgili bir bilet buradan bağlanır ve başka bir bilet takip eder. Yorumlar, eleştirmenler ve beğeniler.
/ Eklentileri/pluginname/{çeşitli}
Klasör için kullanılan "eklenti adı" her zaman değiştirilebilir olmalıdır.
Bu normalde sabitleri tanımlamak ve bunları eklenti boyunca tutarlı bir şekilde kullanmak suretiyle gerçekleştirilir.
Söylemeye gerek yok ki birçok popüler eklenti günahkardır.
plugins_url()
Eklenti ile birlikte gelen kaynaklara kolay bağlantı için.Bir eklenti gerekiretkisini etkilemek mümkün olduğu kadar azaltmak için global isim alanına eklediği isimlerin sayısını en aza indirgemek.
Bu, eklentinin işlevlerini bir sınıfa sararak veya PHP ad alanı özelliği kullanılarak yapılabilir. Her şeyi öneklemek de yardımcı olabilir ama o kadar da esnek değil.
İşlevler ve sınıfların yanında, bir eklenti olmamalı global değişkenleri tanıtır. Normalde sınıfları kullanmak onları eskimiş ve eklenti bakımını kolaylaştırıyor.
En iyi uygulama PhpDoc stiline yakın. Eğer "Eclipse" gibi bir IDE kullanmazsanız, sadece bir bakabilirsiniz PhpDoc Manual .
Bunun nasıl çalıştığını tam olarak bilmek zorunda değilsin. Profesyonel Geliştiriciler yine de kodu okuyabilir ve buna bir özet olarak ihtiyaç duyar. Hobi kodlayıcıları ve kullanıcıları, aynı bilgi düzeyinde açıkladığınız yöntemi takdir edebilir.
Add_option işlevi aracılığıyla DB'ye seçenekler eklemek yerine, Settings API komutunu kullanarak sizin için her şeyi halleder.
Modifikasyon API , oldukça basit bir yapı ve seçenek ekleme ve alma olanağı sağlayan güvenli bir yoldur. Her şey veritabanınızda serileştirilmiş değer olarak kaydedilir. Kolay, güvenli ve basit.
(Önceden: Anonim API İletişimi)
Bir eklenti harici bir sistem veya API ile iletişim kuruyorsa (örneğin, bazı Web servisleri), bunu isimsiz bir şekilde yapmalı veya kullanıcıya, eklentinin kullanıcısı ile ilgili hiçbir verinin kontrolsüz bir ikinci tarafa sızmasını sağlayan isimsiz bir seçenek sunmalıdır.
Birçok durumda, kullanıcılar herkesin eklentiniz tarafından oluşturulan alanlara, özellikle de birden çok karmaşık işlem yapan eklentilerle erişebilmelerini istemeyebilir, tek bir sabit kodlanmış yetenek denetimi yeterli olmayabilir.
En azından, eklentinizin kullanılabileceği tüm farklı işlem türleri için uygun yetenek denetimlerini yapın.
Hosting eklentileri için SVN repository uygulamasını WordPress.org üzerinde kullanın. Kullanıcı deneyimini daha kolay güncellemenizi sağlar ve daha önce SVN'yi hiç kullanmadıysanız, onu haklı çıkaran bir bağlamda kullanarak gerçekten anlamanızı sağlar.
Yapıldığı sırada yazılmayan kodları okumak çok zor. Öncelikle/request, tanımlayın, wp_enqueue_style & _script, vb., Ardından eklenti/temanın ihtiyaç duyduğu işlevleri ve en sonunda oluşturucu (örn. Yönetici ekranı, temayla bütünleşen şeyler vb.).
Css ve js gibi şeyleri kendi klasörlerinde ayırmaya çalışın. Ayrıca bunu, dizi yassılaştırıcılar ve benzerleri gibi yalnızca yardımcı olan işlevlerle yapın. "Ana" dosyayı olabildiğince temiz ve kolay okunması, bir yıl içinde güncelleme yapmaya çalıştığınız ve daha uzun süredir kodu görmediğiniz zaman, kullanıcılara, geliştiricilere ve size yardımcı olacak bir yoldur.
Sıklıkla tekrarladığınız bir yapıya sahip olmak da iyidir, bu yüzden her zaman yolunuzu bulursunuz. Farklı projeler üzerinde bilinen bir yapının geliştirilmesi, bunu daha iyi hale getirmeniz için zaman kazandıracak ve müşteriniz başka bir geliştiriciye geçse bile, "kaos bıraktığını" asla duymayacaksınız. Bu itibarınızı arttırır ve uzun vadeli bir hedef olmalıdır.
Eklentiler arasında yaygın değildir, ancak eklentiniz (bazılarında) ayarlara sahipse, gerekir yapılandırma ve kullanıcı girişi gibi verilerin İçe Aktar/Ver'i sağlar .
İthalat/İhracat bir eklentinin kullanılabilirliğini arttırır.
Böyle bir ithalat ve ihracat işlevselliğine (ve aynı zamanda bir geri alma mekanizmasına sahip) sahip örnek bir eklenti Breadcrumb NavXT (Wordpress Plugin) (tam açıklama: orada benim için bazı küçük kodlar, çoğu mtekk tarafından yapıldı) .
düzgün bir şekilde ölün Eklentilerin tümü (ve hatta temaları) işlevleri kullanıcıya ne olduğu hakkında biraz bilgi vermek için kritik yerlerde wp_die()
işlevini kullanmalıdır. Php hataları can sıkıcı ve wp_die
, kullanıcıya, eklentinin (veya onların) yanlış yaptığı hakkında Nice tarzı bir mesaj verebilir. Ayrıca, kullanıcı hata ayıklamayı devre dışı bıraktıysa, eklenti bozulur.
wp_die()
işlevini kullanmak ayrıca eklentilerinizin/temalarınızın wordpress testsuite ile uyumlu olmasına yardımcı olur.
RTFM (yardım tıkla) sorusunu tekrar tekrar cevaplamak zorunda kalmak yerine, bir cevap olarak söylemek daha iyidir.
/**
* Add contextual help for this screen
*
* @param $rtfm
* @uses get_current_screen
*/
function ContextualHelp( /*string*/ $rtfm)
{
$current_screen = get_current_screen();
if ($current_screen->id == $this->_pageid)
{
$rtfm .= '<h3>The WordPress Plugin - Screen A</h3>';
$rtfm .= '<p>Here are some tips: donate to me ' .
}
return $rtfm;
}
add_action('contextual_help', array($this,'ContextualHelp'),1,1);
update/note: (kaiser'den gelen yorumları görün): yukarıdaki örnek bir sınıfta kullanılacak
Bir eklenti veri girişi yapma imkanı sunduğunda, her zaman en sonunda "gönder" ve/veya "sıfırlama" düğmesinden hemen önce bir kancaya sahip olmalıdır, böylece geliştiriciler formu yalnızca alanlarla değil, düğmeleri de kolayca genişletebilirler.
Bakınız: Ayarlar API'si
doğrudan değil, her zaman Kanca ile işlevi içerir.
Örnek:
İçin kullanmayın eklenti sınıf kanca olmadan yeni yoluyla dahil
Hook plugins_loaded kullanın
// add the class to WP
function my_plugin_start() {
new my_plugin();
}
add_action( 'plugins_loaded', 'my_plugin_start' );
Güncelleme: küçük bir canlı örnek: Eklenti-svn-trunk-sayfa ve sözde bir örnek
//avoid direct calls to this file where wp core files not present
if (!function_exists ('add_action')) {
header('Status: 403 Forbidden');
header('HTTP/1.1 403 Forbidden');
exit();
}
if ( !class_exists( 'plugin_class' ) ) {
class plugin_class {
function __construct() {
}
} // end class
function plugin_start() {
new plugin_class();
}
add_action( 'plugins_loaded', 'plugin_start' );
} // end class_exists
Ayrıca multisite kurulumunda mu_plugins_loaded ile yükleyebilirsiniz, eylem referansı kodeksine bakın: http://codex.wordpress.org/Plugin_API/Action_Reference Ayrıca burada, bu kanca ile wP'nin nasıl dahil edildiğini göreceksiniz: http://adambrown.info/p/wp_hooks/hook/plugins_loaded?version=2.1&file=wp-settings.php Bunu çok sık kullanıyorum ve çok zor ve erken değil, zor bir sınıf olarak daha iyi ();
Eklenti açıklamanız, eklentinizin işlevlerini doğru şekilde ayrıntılandırmalıdır. 10 tane özellikli eklenti var. Hepsi özellikli yayınlar gösteriyor, ancak birçoğunun farklı özellikleri var. Açıklamasını okuyarak eklentinizi benzer eklentilerle karşılaştırmak kolay olmalı.
Gerçekten çok basit olmadığı sürece eklentinizin ne kadar basit olduğu konusunda övünmekten kaçınmalısınız. Ayarlara bağlantı gibi açıklamaya faydalı bağlantılar eklemelisiniz.
Eklentiler ve temalar olmalıdır WordPress uyumlu bir lisans altında lisanslanmalıdır. Bu, WordPress ile "program" olarak yeniden dağıtılmalarını sağlar. Önerilen bir lisans: GPL . Eklentiyle birlikte verilen tüm kod kütüphanelerinin aynı lisansla uyumlu olmasına dikkat edin.
(Bu geçmişte bir problem olmuştur ve ciddi tartışma konusu ve hem de mevcut .)
Bir Eklenti should Önbellek/Kalkan Web Hizmeti ve/veya XMLRPC/SOAP önbellekleme/veri sağlayıcı katmanı aracılığıyla talep eder eğer bunları ön istekleri beklememek için kullanıyorsanız yavaş) web servis yanıtı.
Buna RSS beslemesi ve diğer sayfaların indirilmesi de dahildir. Eklentileri arka planda veri talep edecek şekilde tasarlayın.
Mümkün olan bir ADIM şudur (Örnek olarak ping.fm'a gönderme yapın): Bir tampon tablosu oluşturun, diyelim ki: ping_fm_buffer_post (tarih, saat, mesaj, mesaj zamanı, durum)
Eklenti geliştirme ortamımızda kesinlikle bazı test araçlarına sahip olmalıyız.
bu cevaba göre / Ethan Seifert bir test sorusuna göre, bunlar takip edilecek iyi uygulamalardır:
Ad kancaları ve filtreleri (sınıflar, işlevler ve değişkenler), yani insanlar onları bir yılda bile tanımlayabilir, daha fazla hatırlamadıkları zaman, o kek parçasını veya nerede kod geliyor. Kanca/filtre adlarının uzaması önemli değil. Ör. youruniquename_hook/filter_whatitdoes.
dbdbInit.class.php
" olarak adlandırılmalıdır.dbdbInit
- class'ınızın içine girdiyseniz, ex'i kaydeden bir işlev. custom_post_types, sonra register_custom_post_types()
olarak adlandırın.$custom_post_type_names
atandığı değişkeni çağırın.function array_handler( $array ) { // handle the array}
yaz.Başka bir şey: Öyleyse bir şeyleri hata ayıklamak zorunda kalırsanız, tüm vakaların% 99'unda tüm mesajlarınızı yalnızca kodunuz için değil, aynı zamanda wordpress için de alırsınız. Öyleyse, aynı öneki kullanmaya çalışın. Sınıflarınız, genel işlevler ve değişkenler/nesneler için "dbdb
". Bu sayede yüzlerce dosya arasında kolayca bulabilirsiniz. (Wordpress, temanızdan önce 64 dosya yükler ve yaklaşık 1.550 işlev kullanır, kancalar ve filtreler hakkında konuşmaz.)
Not: Bu tavsiyeyi yeniden okuduktan sonra, şimdi bu uygulamadan geri gidiyorum, çünkü her işlevi kontrol etmek sitenizi yavaşlatabilir.
İşlevlerin kullanımdan kaldırılıp bırakılmadığını kontrol edin doğrudan temanızda.
Bu bir "böyle olabilir" örneğidir.
if ( ! function_exists( 'wp_some_fn' ) )
{
$theme_data = wp_get_theme();
$error = new WP_Error( 'wp_some_fn', sprintf( __( 'The function %1$s is deprecated. Please inform the author', TEXTDOMAIN ), "Theme: {$theme_data->Name}: Version {$theme_data->Version}" );
// abort
if ( is_wp_error( $error ) )
return print $error->get_error_message();
}
// else if no error - the function works and exists
wp_some_fn();
Doğru/en iyi uygulama hatası işleme için bu cevaba bakınız: link
$ Nedenini bile fonksiyona bırakabilirsiniz. Bu, sizin ve kullanıcılarınızın temanızdaki değişebilecek işlevleri veya sınıfları izlemenize yardımcı olur.
WordPress Kodlama Standartlarını Kullan
http://codex.wordpress.org/WordPress_Coding_Standards
Çalıştığınız kodu vs. başka birinin bir araya getirdiği kodu güncellemenin ne kadar kolay olduğunu biliyor musunuz? Kodlama standartları, bir proje üzerinde çalışan herhangi bir geliştiricinin içeri girip neler olduğunu görmesini kolaylaştırır.
Eklentinizin veya temanızın size ait olduğunu biliyoruz ve çizgilerinizi kırma ve kaşlı ayraçları ekleme şekliniz kişiliğinizin bir ifadesidir. Her girinti, dikkatlice düşünülmüş bir ifadedir. Ancak, özel kodunuzla, kodunuz çekirdek uygulamada olmasa bile, WordPress’e katkıda bulunuyorsunuz. Kodlama standartları, geliştiricilerin kodunuzla hızlı bir şekilde hızlanmalarına yardımcı olur.
Eklenti gerekir eklenti kodunu WordPress kodundan ayırmak için WordPress API'sinin etkisini gereken minimum seviyeye indirgeyin . Bu, WordPress kod tabanı içindeki değişikliklerin eklenti üzerindeki etkisini azaltır. Ek olarak bu, eklenti kodunuzun çapraz sürüm uyumluluğunu geliştirir.
Bu, WordPress işlevlerini kullanmamak (bunları, mevcut işlevleri yeniden kullan) gibi kullanın önerdiği anlamına gelmez), ancak kodunuzu WordPress işlevleriyle çok fazla örmek değil, eklenti işletme mantığınızı ayırmak WordPress işlevselliğinden.
Eklentinin kolayca kullanılmasını ve özelleştirilebilir hale getirilmesi için, tüm çıktı dizelerinin değiştirilebilir olması gerekir. Bunu yapmanın en iyi yolu, çıkış dizelerini saklamak ve varsayılan değerleri değiştirmek için arka uç sağlamak için wp seçeneklerini kullanmaktır. Eklenti, eklenti arka ucunu kullanarak kolayca değiştirilemeyen görüntülenen dizeleri kullanmamalıdır.
Örneğin: Sosyal - size simgeler bölümü "paylaş ve hoşlanın:" bölümünden önce görünen cümleyi değiştirebilmenizi sağlar
Bunun için üç farklı kanca var:
register_uninstall_hook();
öğesini kaldırregister_deactivation_hook();
register_activation_hook();
Çalışan bir örnek ile ayrıntılı bir talimat burada bulunabilir. .