Eklenti (ana) dosyası ile eklentinin bilgi dosyası arasındaki fark, WordPress Codex'un çok daha iyi yapabileceği bir yerdir. Karışıklıklarını çok yakın zamanda hissettiğim için anlıyorum (hayal kırıklığı ile karışık).
WordPress çekirdek kodunda bazı "dedektiflik çalışmaları" yaparak öğrendiğim budur.
Eklenti dosyası
Bu, WordPress'in bir eklentiyi tanımlaması ve kaydetmesi için benzersiz bir yoldur. Eklentinin dizininden ve ana eklenti dosyasından (sürüm, yazar vb. Gibi çeşitli eklenti ayrıntılarını içeren dosya başlığına sahip olan) oluşur.
Bunun gibi bir şey olurdu: your-plugin-directory/main-file.php
Etkin eklenti verilerine bakarsanız (tarafından döndürülür get_option( 'active_plugins' )
), WordPress'in eklentileri düzgün bir şekilde tanımlamak için bu eklenti dosyasına ihtiyacı olduğunu görürsünüz.
Bunu, eklentinizin ana dosya göreli yolu (olan wp-content/plugins/
dizine göre) olarak düşünmeyi seçebilirsiniz . Ana eklenti dosyasının mutlak yolunu aşağıdaki gibi bir şeyle "oluşturabilirsiniz":trailingslashit( WP_PLUGIN_DIR ) . $plugin_main_file
Çekirdeğin kendisi eklenti dosyasını şu şekilde üretir:
$plugin_main_file = plugin_basename( trim( $plugin_main_file_absolute_path ) );
Eklenti bilgi
Bir eklenti "slug" post slug yazı için olduğu gibi eklenti için bir çeşit standart kimlik olmasını beklediğiniz - böylece WordPress çekirdek işlevlerini sağlamak ve işler almak için bu "slug" kullanabilirsiniz.
Pek sayılmaz. Eklenti salyangozlara (veya önemli olan konulara) başvurular için çekirdeği araştırdıktan ve neredeyse hiçbir şey bulamadığımda, üzerinde bir kavrayışım olduğunu düşünüyorum.
Tek gerçek sümüklü böcekler , benzersiz bir URL yoluyla erişilebilen şeyler içindir: gönderiler, sayfalar, sınıflandırmalar, vb. Bu, bir şeyin adını (bir yazı başlığı gibi) almanın ve URL dostu bir versiyonunun oluşturulmasının bütün noktasıdır: kullanmak bir URL'de.
Ancak URL'lerde theme / plugins "slugs" i nerede kullanıyoruz?
Bunu, WordPress kurulumlarında yapmıyoruz - WP yöneticisinde veya ön uçta.
Ancak, WordPress kodu, WordPress.org sitesi ile çok fazla karışmış bir yer var . İnsanlar, WordPress.org temasının veya eklenti salyangozların bir gönderi veya sayfa sümüküyle aynı şekilde çalışması gerektiğini düşünmek için geliştiriciler arasında bir şekilde yaygın hale gelmesi de dahil olmak üzere ikisi arasında ayrım yapmakta zorlanıyorlar .
Aynı amaca hizmet ederler ancak ayrı web sitelerinde. WordPress.org'da, başkalarından bir temayı ve geri kalanından bir eklentiyi (gibi URL'lerde https://wordpress.org/plugins/akismet/
) benzersiz bir şekilde tanımlamak için kullanılırlar .
Ancak bireysel WordPress kurulumları söz konusu olduğunda , aynı benzersizlik garanti edilemez çünkü onu uygulama yetkisi yoktur (WordPress.org'daki gibi). Tüm eklentiler ve temalar WordPress.org'dan geldiyse işe yarayabilir , ancak neyse ki durum böyle değildir.
WordPress kodu tema / eklenti sümüklü böceklerle ne yapar?
WordPress çekirdek kodu , temaları veya eklentileri yüklemek, etkinleştirmek, güncellemek, temaları veya eklentileri silmek gibi şeyler yapmak için tema / eklenti sümüklerine güvenmez .
Temalar için temanın ana giriş noktası style.css
dosya olduğundan (tema ayrıntıları başlığınızı tutmak için başka bir CSS dosyası kullanamazsınız) tema dizinine dayanır .
Eklentiler için, eklenti ana dosyasını istedikleri gibi çağırabildiği için eklenti dizinine ve ana eklenti dosyasına dayanır .
Çekirdeğin tema / eklentiler için salyangozları kullandığı tek şey, WordPress.org dizinindeki temaları ve eklentileri işlemesi : eklenti listelerinin getirilmesi, güncellemelerin kontrol edilmesi, dizin kullanım verilerine geri bildirilmesi vb.
Eklenti sümüklü böcekler hakkında bir şeyler sarmak için :slug
girişle birlikte eklenti verileri bulduğunuzda ,% 99'u eklentinin WordPress.org slug'ına atıfta bulunacaktır .
Eklentileri nasıl belirleyebiliriz?
WordPress kurulumunda belirli bir eklentiyi programlı olarak etkinleştirmek, güncellemek, devre dışı bırakmak veya silmek istiyorsanız , eklenti dosyasını kullanmanız gerekir . Sen bunun gibi alabilirsiniz senin eklentinin ana dosya:
$plugin_file = plugin_basename( __FILE__ );
Başka bir eklentiden belirli bir eklentiyi hedeflemek istiyorsanız , bir miktar "tahmin" e güvenmeniz gerektiğinden işler biraz daha karmaşıklaşır.
Eklenti adını sabit kodlayabilir, tüm eklentiler listesinde eklentiyi arayabilir (bkz. Get_plugins () ) ve eklenti dosyasını oradan alabilirsiniz.
Eğer yansıma kullanabilirsiniz eklentisi ile belirlenir ve böylece bir sınıf veya işlevi biliyorsanız (bkz bu sınıflar için cevap ve bu bir işlevleri için).
Umarım bu size ve "eklenti salyangoz" ile uğraşmakta zorlanabilecek diğerlerine yardımcı olur. Bana birkaç saat kurtarabilirdi :)