แหล่งเก็บไฟล์ PHP ที่สร้างโดยปลั๊กอิน / ธีม


12

มีหลายกรณีที่ปลั๊กอินหรือชุดรูปแบบจำเป็นต้องสร้างไฟล์ php ไว้ที่ใดที่หนึ่งซึ่งสามารถรวมในภายหลังได้ ตัวอย่างเช่นปลั๊กอิน captcha หรือระบบ templating เช่น twig / smarty (ในสถานการณ์ของฉันมันเป็นเครื่องมือเทมเพลตอย่างง่ายสำหรับคอลเลกชันของวิดเจ็ต)

ไฟล์นี้ควรสร้างที่ไหน?

ที่เดียวที่ฉันนึกได้คือwp-content/uploads/แต่นั่นก็ไม่ถูกต้อง :)

ดังนั้นมีสถานที่ที่ปลอดภัยที่คุณสามารถสร้างไฟล์และไม่ต้องกังวลเกี่ยวกับพวกเขาจะถูกลบในการปรับปรุง WordPress / ปลั๊กอิน / ชุดรูปแบบ?

ทางออกหนึ่งคือการสร้างธีมลูก / ไดเรกทอรีในไดเรกทอรี themes / plugins ...

คำตอบ:



5

คุณไม่สามารถพึ่งพาการเข้าถึงเพื่อเขียนในปลั๊กอินหรือไดเร็กทอรีธีมดังนั้นwp_upload_dir ()เป็นไดเรกทอรีเดียวที่เป็นไปได้
แต่ฉันสงสัยจริงๆว่ามีความจำเป็นต้องจัดเก็บข้อมูลในไฟล์ใหม่ หากผู้ใช้สร้างเทมเพลตให้เก็บไว้ในตัวเลือกเพื่อแยกเนื้อหาด้วยฟังก์ชั่นปลั๊กอินปกติของคุณ (ตัวอย่างเช่นโดยแทนที่ตัวยึดตำแหน่งด้วยstrtr())


ใช่มันเป็นสิ่งที่ดีสำหรับการแทนที่ตัวแปร (ตอนนี้ฉันมีบางอย่างที่เหมือนกัน) แต่ถ้าคุณต้องการอนุญาตให้ผู้ใช้ใช้แท็กที่มีเงื่อนไขเช่น IF หรือวนลูปวัตถุคุณต้องเขียนโค้ด php ...
onetrickpony

5

ในขณะที่ทำงานกับปลั๊กอิน Wordpress ฉันพบคำถามของคุณ ฉันยังคิดถึงการสร้างไฟล์ชั่วคราวเพื่อแคชข้อมูลบางส่วนที่ปลั๊กอินของฉันสร้างขึ้น อย่างไรก็ตามให้คิดอีกเล็กน้อยวิธีการนี้ดูแปลกสำหรับฉันเนื่องจากคุณไม่ต้องการให้มีข้อมูลชั่วคราววางอยู่บนเซิร์ฟเวอร์เดียวหากคุณพยายามปรับขนาดโดยใช้คลัสเตอร์ของเซิร์ฟเวอร์

ดังนั้นฉันจึงค้นหาอีกครั้งและดูเหมือนว่าทางออกที่ถูกต้องสำหรับปัญหาดังกล่าวคือWordpress Transients APIช่วยให้คุณสามารถจัดเก็บข้อมูลในฐานข้อมูลด้วยวันหมดอายุ แน่นอนว่าปัญหาของคุณอาจต้องใช้ไฟล์แคชในตัวเครื่องเช่นถ้าไฟล์มีขนาดใหญ่เกินไปสำหรับฐานข้อมูล แต่อย่างน้อยฉันขอแนะนำให้ดูที่ตัวเลือกนี้เช่นกัน :-)


3

ฉันสามารถนึกถึงเหตุผลที่ดีเพียงเล็กน้อยที่ปลั๊กอินจะต้องสร้างไฟล์ หนึ่งคือการสำรองข้อมูลตัวเลือกที่ซับซ้อนที่ผู้ใช้สามารถส่งออกและดาวน์โหลดเพื่อย้ายไปยังไซต์ใหม่ อื่น ๆ เป็นปลั๊กอินแผนผังเว็บไซต์

หากปลั๊กอินของคุณมีไฟล์เทมเพลตที่ผู้ใช้สามารถปรับแต่งคุณควรให้ตัวเลือกแก่ผู้ใช้ในการย้ายไฟล์ที่กำหนดเองไปยังไดเรกทอรีธีมปัจจุบันดังนั้นเมื่อปลั๊กอินของคุณอัปเดตพวกเขาจะไม่ถูกเขียนทับ คุณสามารถลองโหลดไฟล์จากไดเรกทอรีธีมก่อนแล้วย้อนกลับไปยังไดเรกทอรีปลั๊กอินของคุณ

Gravity Forms เก็บไฟล์ที่อัพโหลดในโฟลเดอร์ของตัวเองภายในการอัพโหลด W3 Total Cache ใช้ wp-content, การเปลี่ยนเส้นทางการเข้าสู่ระบบใช้วิธีที่ฉันอธิบายไว้ข้างต้น


1

หากคุณต้องสร้างไฟล์ (เช่นไฟล์ชั่วคราวสำหรับปลั๊กอิน CAPTCHA) คุณควรใช้\wp-content\uploads\(หรือไดเรกทอรีที่กำหนดเองเช่น\wp-content\plugin-slug-files\)

รหัสที่กำหนดเองอื่น ๆ ส่วนใหญ่ควรเก็บไว้ในฐานข้อมูล


1
และeval()มันได้หรือไม่ ไม่มีทาง ...
onetrickpony

คุณต้องการeval()อะไร
Chip Bennett

คิดว่าฉลาดเช่น สมมติว่าคุณสร้างวิดเจ็ตและคุณต้องการให้ผู้ใช้มีความสามารถในการปรับแต่งเอาต์พุตในแบบที่พวกเขาต้องการ ดังนั้นคุณจึงเพิ่ม textarea ในตัวเลือกวิดเจ็ตที่ผู้ใช้สามารถเขียนเทมเพลตคล้ายสมาร์ทสำหรับวิดเจ็ตนั้น เทมเพลตนั้นจะต้องรวบรวมและวิธีที่ดีที่สุดคือการสร้างไฟล์ PHP และรวมไว้ในวิดเจ็ต
onetrickpony

ฟังดูเหมือนยืดออกอย่างมากของการใช้งาน Widgets / Widget options ...
Chip Bennett

1
ไม่แน่นอน แต่ IMHO หากผู้ใช้ต้องการความยืดหยุ่นในการสร้างวิดเจ็ตที่กำหนดเองผู้ใช้ควรเขียนปลั๊กอินที่กำหนดเองหรือเพิ่มรหัสวิดเจ็ตที่กำหนดเองลงในไฟล์ เหตุใดจึงมีปลั๊กอินที่สร้างวิดเจ็ตซึ่งทำให้ผู้ใช้สามารถสร้างวิดเจ็ตอื่นได้
Chip Bennett

1

ฉันมักจะแนะนำตัวโหลดอัตโนมัติที่เข้ากันได้กับ PSR-0 และโฟลเดอร์ไลบรารีที่ใช้งานได้

ผู้ใช้ WP บางคนอาจยิงคุณ แต่บางทีคุณไม่ได้มุ่งเน้นไปที่ผู้ใช้เหล่านี้ดังนั้นนี่อาจเป็นตัวเลือก โดยเฉพาะถ้าคุณได้รับ libs เฉพาะของผู้ขายมากขึ้นเรื่อย ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.