Farklı bir eklentiye yol alın


10

Bir eklentiye giden yolu elde etmek için kullanabilirsiniz plugin_dir_path(__FILE__)- ancak bu açıkça eklentiden çağrılmalıdır.

Eklenti A'dan B ( ) eklentisine giden yolu nasıl güvenilir bir şekilde edinebilirsiniz pluginb/pluginb.php?

Düzenleme: Sonradan eklentinin sülük biliyorum aslında (aslında onları alabilirsiniz get_plugins()). Ama genel olarak çalışmasını istiyorum.


Bu herhangi bir eklenti için geçerli midir? veya özellikle bir / birkaç? İkincisi, kendiniz mi yoksa halka açık mı?
TheDeadMedic

Bu yüzden peşinde olduğunuz eklentinin sülükünü bildiğinizi varsayıyorum: örneğin pluginb/pluginb.php, ancak üçüncü taraf.
Stephen Harris

Yanıtlar:


9

En iyi tahminim:

if ( ! is_file( $dir = WPMU_PLUGIN_DIR . '/pluginb/pluginb.php' ) ) {
    if ( ! is_file( $dir = WP_PLUGIN_DIR . '/pluginb/pluginb.php' ) )
        $dir = null;
}

return $dir;

Ancak, buradaki tehlike hala eklentinin "temel adı" varsayımıdır - iyi yazılmış bir eklenti, dizini ve / veya ana dosyası yeniden adlandırılmış olsa bile çalışmaya devam eder (herhangi bir nedenle).

Bu benim orijinal yorumuma geri dönüyor - hangi üçüncü taraf eklentisine atıfta bulunduğuna bağlı olarak, birçok yazar eklenti yolunu tutmak için kendi yöntemlerini / sabitlerini tanımlar - varlığını kontrol etmek ve bunları kullanmak (eğer varsa) kullanmak mantıklı olacaktır ).


Ah tamam, soruyu güncelledim :). Eklentileri bilgi alabilirsiniz get_plugins()- kullanım durumumda yeterli. Belirli bir eklentiden sonraysanız ve daha iyi bir şey yoksa, sanırım eklentiyi adıyla arayabilirsiniz get_plugins().
Stephen Harris

+1 İdeal olarak sabitleri kullanmaktan kaçınmak ister - ancak bu çözüm en azından bunları kullanırken denetler :) - ve çekirdek bir şeyler yapıyor gibi görünüyor.
Stephen Harris

2

Bu nedenle bir yöntem, plugin_dir_path()geçerli eklentiyi aramak ve kendi eklenti dizini adınızı, peşinde olduğunuz eklentinin bilgi kısmıyla değiştirmek ( pluginb/pluginb.php):

Eklentimiz içinde plugina/plugina.php,

$plugin_b = str_replace('plugina/','pluginb/pluginb.php',plugin_dir_path(__FILE__));
echo $plugin_b; //Prints path/to/pluginb/pluginb.php';

B eklentisinin A ile aynı dizinde olduğu varsayımı olduğu için buna karşı tavsiyede bulunacağım (bu durum böyle olmayacak, ala MU eklentileri).
TheDeadMedic

Teşekkürler, özleyeceğim bir şey olacağını düşündüm :)
Stephen Harris

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.