WordPress’te bir ayar sayfası nasıl oluşturulur
Bir WordPress eklentisi oluşturursanız, bunun için nasıl bir ayar sayfası oluşturacağınızı merak ediyor olabilirsiniz. WordPress bunun için bir tür “standart” mekanizma sunuyor mu? Modern bir ayar sayfası oluşturmak için yeni bir araç veya çerçeve var mı? Bir ayar sayfası oluşturmak için iyi bir fikir nedir? Bugün tüm bunlar hakkında konuşacağız ve sorunuzu cevaplayacağım. Karar, WordPress’in seçimi değil, web’i göstermeyi amaçlayan bir platformdur. Kulağa çok iyi gelen ama aynı zamanda çok soyut olan bu ifade, “Herkesin WordPress’i kullanmasını istiyoruz” demenin bir yoludur. Ve inanın ister inanmayın, ayar sayfası olabilir ve gerçekte çoğu durumda, bunun için bir engeldir. Bana inanmıyor musun? WordPress’in kendisi şöyle diyor:
Bir karar verirken, önce düşündüğümüz kullanıcı budur. Bu düşüncenin iyi bir örneği yazılım seçeneğidir. Her seçim kullanıcısı verdiğinizde, onlardan bir karar vermelerini istersiniz. Kullanıcılar bu seçeneği umursamadığında veya anlamadıklarında nihayetinde hayal kırıklığına neden olur. Geliştiriciler olarak, bazen her şey için seçenekler vermenin iyi bir şey olduğunu düşünüyoruz, asla çok fazla seçeneğiniz olmayacak, değil mi? Sonunda, bu seçim sonunda teknik bir seçim haline geldi, ortalama uç kullanıcı tarafından talep görmeyen bir seçim. Akıllı tasarım kararları vermek ve son kullanıcılarımız için teknik seçimleri yüklemekten kaçınmak geliştiricilerimiz olarak görevimizdir.
WordPress Felsefesi Bir ayar sayfası oluşturmadan önce, kullanıcılarınıza vermek istediğiniz seçenekleri, neden seçeneğe erişmelerini istediğiniz ve bunu yapmanın gerekli veya yararlı olup olmadığını dikkatlice düşünün. Alternatif olarak filtre kullanıcılarıma çok fazla seçenek sunmamam gerektiğini bilsem bile, bir geliştirici olarak, seçenekler sunmak yerine karar vermem her zaman kolay olmadığını itiraf etmeliyim. Açıkladığım seçeneklerin karmaşık olduğunu fark etsem bile, kullanıcımın seçme yeteneğine sahip olmasını istediğim zamanlar var. Peki bu durumda ne yapmalıyım? WordPress önerilerini takip ediyor muyum ve ileri düzey kullanıcılarımı sınırlandırıyor muyum? Neyse ki, WordPress bu ikileme mükemmel bir çözüm sunuyor: filtre. Bir eklenti tasarlarken ve bir kullanıcı (devam) istediğinizde, davranışı ayarlayabilir, bir ayar sayfası veya başka bir şey oluşturmayabilirsiniz. Bunun yerine, eklentinizi WordPress filtreleme mekanizması ile ayarlanabilir. Bir filtre kullanırsanız, kullanıcılarınızın çoğu varsayılan davranıştan yararlanır (“karar,” hatırlayın?), Çünkü filtrenizde ayarlanan varsayılan değere sahip eklentiler kullanacaklar, gelişmiş kullanıcılar ise bu kararı değiştirme yeteneğine sahip olacaktır. kancalar (ve ayrıca “seçenekler” de var). İki dünyanın en iyisi!
WordPress Ayarları Tamam, şimdi kullanıcılarımız için karar vermenin önemini anlıyoruz ve bu sınırı (gerekirse) filtre aracılığıyla nasıl geçeceğini gördük, WordPress’te nasıl bir ayar sayfası oluşturabileceğimizi görmenin zamanı geldi.CUZ, Yup: Kullanıcılarımıza tercihlerine göre kararlar vermek için gerçekten seçenekler sunmamız gereken zamanlar var.WordPress API ayarlarındaki API ayarları WordPress sürüm 2.7’ye eklenmiştir.Bu, ayar sayfasının oluşturulmasını standartlaştıran, hangi seçeneklerin mevcut olduğunu belirlemenizi sağlayan, bu seçeneklerin her birini (temel olarak, formdaki alan) nasıl doğrulamak için kullanılacağını ve nasıl doğrulanacağını belirleyen bir dizi işlevdir. , saklayın ve değeri alın.
Bence öğrenmenin en iyi yolu örneklerle, bu yüzden API ayarlarını adım adım kullandığımız ilk ayar sayfasını oluşturalım. Yeni Ayarlar Sayfası Oluşturma Ayarları görüntülemek için bir sayfa oluşturmak için Ayarlar sayfasını yapmak için yapmanız gereken ilk şey (sürpriz, sürpriz!). Bunu yapmak için, admin_menu eylemi sırasında add_options_page işlevini kullanın ve kayıt sayfası: nelio_add_settings_page () function {add_optionss_page (‘nelio’, ‘managess’, ‘nelio-example-plugin’); } Add_action (‘admin_menu’, ‘nelio_add_settings_page’); Gördüğünüz gibi, bu işlevle yaptığımız tek şey, WordPress Ayarları menüsünde görünecek yeni bir sayfa kaydetmektir, başlık, menüdeki ad, kullanıcının erişebilmesi gerektiği iznidir. O ve işletim sistemi aktif. Son argüman, nelio_render_settings_page, sayfayı oluşturmaktan sorumlu olacak işlevin adıdır:
nelio eklenti ayarları
<input type = "gönder" name = "Sınıf =" Düğme düğmesi-primary "değer =" <? PHP ESC_ATTR_E ('Kaydet'); kendisi yapmak nispeten kolaydır.Sadece içeriği WordPress tarafından yarı otomatik olarak yapılacak bir form eklememiz gerekir.Bir yandan, temelde "güvenli" hale getirmek için forma nonce ekleyen setts_fields işlevini diyoruz.Daha sonra, WordPress'ten Do_settings_section işlevini kullandığımız eklenti için yaptığımız tüm ayarları oluşturmasını istiyoruz.Ve son olarak, form gönder düğmesini ekleyebiliriz.
Bir sonraki ayar sayfamızdaki gerçek ayarlar, ayar sayfamızın bir parçası olacak her seçeneği kaydetmeliyiz. Bunu yapmak için iki işlevi kullanacağız: Ayarları veritabanında saklamak için kullanacağımız adı göstermemize izin veren Register_setting ve her bir seçeneği ekleyen add_settings_field: işlev nelio_register_settings () {nelio_plugin ', 'nelio_validate_example_plugin_settings'); add_settings_section ('bölüm_one', 'birinci bölüm', 'nelio_section_one_text', 'nelio_example_plugin'); add_settings_field ('bazı_text_field', 'bazı metin alanı', 'nelio_render_some_text_field', 'nelio_example_plugin', 'bölüm_one'); Add_settings_field ('başka bir_number_field', 'başka bir sayı alanı', 'nelio_render_another_number_field', 'nelio_exudo_plugin', 'bölüm_one'); } Add_action ('admin_init', 'nelio_register_settings'); Önceki kod görüntüleri özel dikkat gerektiren birkaç şey vardır. Bir yandan, Register_setting işlevinin üç bağımsız değişkeye sahip olduğunu unutmayın: nelio_validate_example_plugin_settings. Bu, kullanıcının seçtiği değeri doğrulamak için çağrılacak olan iade çağrısı işlevinin adıdır (formunuzu her zaman doğrulamanız ve temizlemeniz gerektiğini unutmayın). Bu işlev kabaca şuna benzer:
İşlev nelio_validate_example_plugin_settings ($ input) {$ output [‘some_text_field’] = saditize_text_field ($ input [‘sear_text_field’]);$ output [‘başka bir_number_field’] = absint ($ giriş [‘başka_number_field’]);// … $ çıktı döndür;} $ Girişten gönderilen her alanı aldığımız ve veritabanında tasarruf ettiğimiz her şeyin geçerli ve doğru olduğundan emin olduğumuz için $ çıktı olarak temizliyoruz.Odaklanmak istediğim ikinci şey, tanımladığımız her alanın WordPress’in her alanın nasıl oluşturulması gerektiğini anlatan bir referans işlevi içermesidir.Örneğin, örneğimizdeki alanda geri çağrılar şöyle olabilir:
işlev nelio_section_one_text () {echo ‘
Bu, ayarlarımdaki ilk (ve tek) bölümüdür.
‘; } işlev nelio_render_some_text_field () {$ options = get_option (‘nelio_example_plugin_settings’); printf (”, esc_attr (‘nelio_example_lugin_settings [sear_text_field]’), esc_attr ($ optionlar [‘some_text_field’])); } işlev nelio_render_another_number_field () {$ options = get_option (‘nelio_example_plugin_settings’); printf (”, esc_attr (‘nelio_example_lugin_settings [başka bir_number_field]’), esc_attr ($ options [‘başka_number_number_field’]); } Özünde, tüm bu geri çağrılar, oluşturmaları gereken alanın geçerli değerini almak (get_option ile) ve kullanıcıların bir değer veya başka bir değer belirlemesine izin verecek HTML’yi oluşturur (bu örnekte, tür metin veya sayının giriş alanı ). Sonuç nedir, soruyorsunuz? Bu:
Basit ayarlar sayfasını örnekleyin.
Gördüğünüz gibi son zihin, Ayarlar sayfasını nispeten basit hale getirin. Şahsen tüm süreci gerçekten sevmiyorum, çünkü oldukça tekrarlanıyor ve tekrar tekrar aynı kaynak kodunu yazmalıyız … ama yine de kolay.
Bu işlemi daha da basitleştirmek için, basit bir kullanıcı arayüzü aracılığıyla birkaç çevrimiçi kod üreticisi vardır, ayarlar sayfanızda istediğiniz çeşitli alanları belirleyebilirsiniz.Bazı örnekler: WP Ayarları API WordPress Seçenek Sayfa Üreticisi
Ve elbette, React gibi teknolojiyi kullanarak her zaman bir ayar sayfası yapma olasılığı vardır … ama bu farklı zamanlar için bir hikaye, değil mi?Rima Kruciene tarafından Üstün Görüntü Unplash.