Eklenti / temalar tarafından oluşturulan PHP dosyaları nerede saklanır


12

Bir eklenti veya temanın daha sonra içerebilecek bir yerde bir php dosyası oluşturması gereken durumlar vardır. Örneğin, bir captcha eklentisi veya dal / smarty gibi bir tür cazip sistem (Benim durumumda widget koleksiyonu için basit bir şablon motoru).

Bu dosya nerede oluşturulmalıdır?

Aklıma gelen tek yer wp-content/uploads/, ama bu doğru gelmiyor :)

Peki, dosyaları oluşturabileceğiniz ve WordPress / plugin / theme güncellemesinde silinmesi konusunda endişelenmeyeceğiniz güvenli bir yer var mı?

Bir çözüm, temalar / eklentiler dizininde bir alt tema / dizin oluşturmak olabilir ...

Yanıtlar:



5

Eklenti veya tema dizinindeki yazma erişimine güvenemezsiniz, bu nedenle wp_upload_dir () mümkün olan tek dizindir.
Ancak , bilgilerin yeni bir dosyada saklanması gerektiğinden gerçekten şüpheliyim. Şablon kullanıcı tarafından oluşturulmuşsa, içeriği bir seçenek içinde saklayın ve içeriği normal eklenti işlevlerinizle ayrıştırın (örneğin, yer tutucuları değiştirerek strtr()).


evet, bu değişkenleri değiştirmek için iyi (şimdi böyle bir şey var). Ancak, kullanıcının IF gibi koşullu etiketleri kullanmasına veya bir nesneyi döngüye almasına izin vermek istiyorsanız, php kodu yazmanız gerekir ...
onetrickpony

5

Bir Wordpress eklentisi üzerinde çalışırken, sorunuzu tökezledim. Ayrıca ilk olarak eklentimin oluşturduğu bazı verileri önbelleğe almak için geçici dosyalar oluşturmayı düşündüm. Ancak, biraz daha düşünerek, bu yaklaşım benim için tuhaf görünüyor, çünkü bir sunucu kümesi kullanarak ölçeklendirmeye çalışıyorsanız, geçici verilerin bir sunucuda dolaşmasını istemiyorsunuz.

Bu yüzden tekrar aradım ve bu tür sorunlar için geçerli bir çözüm gibi görünüyor , bir son kullanma tarihi ile veriyi veritabanında depolamanızı sağlayan Wordpress Transients API . Tabii ki sorununuz hala yerel önbelleklenmiş dosyaları gerektirebilir, örneğin veritabanı için çok büyükse, ama en azından ben de bu seçeneğe bir göz atmanızı öneririz :-)


3

Bir eklentinin bir dosya oluşturmak için ihtiyaç duyabileceği birkaç iyi nedeni düşünebilirim. Bunlardan biri, kullanıcının dışa aktarabileceği ve yeni bir siteye geçmek için indirebileceği karmaşık seçenekleri yedeklemektir. Diğeri bir site haritası eklentisidir.

Eklentinizde kullanıcının özelleştirebileceği şablon dosyaları varsa, kullanıcıya özelleştirilmiş dosyayı geçerli tema dizinine taşıma seçeneği verin, böylece eklenti güncellemeleriniz üzerine yazılamaz. Önce tema dizininden dosyaları yüklemeyi deneyebilir, ardından eklenti dizininize geri dönebilirsiniz.

Gravity Forms, yüklenen dosyaları yüklemelerin içindeki kendi klasöründe saklar. W3 Total Cache wp-content, login redirect yukarıda tarif ettiğim yöntemi kullanır.


1

Dosya oluşturmanız gerekiyorsa (CAPTCHA Eklentisi için geçici dosyalar gibi), kesinlikle \wp-content\uploads\(veya gibi özel bir dizin \wp-content\plugin-slug-files\) kullanmalısınız.

Diğer birçok özel kod gerçekten Veritabanında saklanmalıdır.


1
ve eval()? hayır yolu ...
onetrickpony

Neye ihtiyacın var eval()?
Chip Bennett

örneğin smarty'yi düşünün. Bir widget oluşturduğunuzu ve kullanıcının çıktıyı istediği şekilde özelleştirebilmesini istediğinizi varsayalım. Böylece widget seçeneklerine, kullanıcının söz konusu widget için kendi smarty benzeri şablonunu yazabileceği bir textarea eklersiniz. Bu şablonun derlenmesi gerekir ve bunu yapmanın en iyi yolu bir PHP dosyası oluşturmak ve bunu widget'ın içine dahil etmektir.
onetrickpony

Bu, Widget'lar / Widget seçeneklerinin kullanım amacının önemli ölçüde uzamasına benziyor ...
Chip Bennett

1
Kesinlikle değil. Ancak IMHO, kullanıcının özel Widget'lar oluşturmada çok fazla esnekliğe ihtiyacı varsa, o zaman özel bir Eklenti yazmalı veya Temasının function.php dosyasına özel Widget kodu eklemelidir. Neden Widget'lar oluşturan ve kullanıcıların diğer Widget'lar oluşturmasına olanak tanıyan bir Eklentiniz var?
Chip Bennett

1

Her zaman PSR-0 uyumlu bir otomatik yükleyici ve sadece çalışan bir kütüphane klasörü öneririm.

Bazı WP kullanıcıları sizi vurabilir, ancak belki de bu kullanıcılara odaklanmıyorsunuz, bu bir seçenek olabilir. Özellikle satıcıya özgü daha fazla kitap satın alırsanız.

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.