ไดเรกทอรีโครงสร้างสำหรับปลั๊กอินต้องมีโครงสร้างอย่างไร?


9

ฉันได้รับแนวคิดปลั๊กอินพื้นฐาน ฉันอ่านบทความ Codex เกี่ยวกับการเขียนปลั๊กอิน

บทความนั้นพูดถึงเกี่ยวกับ "ไฟล์ปลั๊กอินหลัก"

Wordpress พิจารณาว่า "ไฟล์ปลั๊กอินหลัก" อย่างไร

คำถามที่ 1:
เป็นเรื่องถูกกฎหมาย / รองรับการมีปลั๊กอินที่มีโครงสร้างเช่นนี้หรือไม่:

  • pluginname /
  • pluginname / mainfile.php
  • pluginname / supportingcode-1.php
  • pluginname / supportingcode-2.php
  • pluginname / Readme.txt
  • ฯลฯ ..

?

Q2:
ถ้าเป็นเช่นนั้น wordpress จะกำหนดว่าไฟล์ php ใดเป็นไฟล์ปลั๊กอินหลัก


ฉันเห็นคำแนะนำที่บอกว่า "ฉันจัดโครงสร้างโค้ดด้วยวิธีนี้ ":

  • pluginname /
  • pluginname / mainfile.php
  • pluginname / inc / supportingcode-1.php
  • pluginname / inc / supportingcode-2.php
  • pluginname / Readme.txt
  • ฯลฯ ..

Q3:
การใช้ไดเรกทอรีย่อย (เช่นinc/ในตัวอย่างข้างต้น) เป็นข้อกำหนดเมื่อโค้ด PHP ครอบคลุมหลายโมดูลหรือไม่?

Q4:
จริงหรือไม่ที่ควรมีไฟล์สูงสุดหนึ่งไฟล์ php ในไดเรกทอรีปลั๊กอินหลัก

ขอบคุณ


แน่นอนคำถามแรกของคุณ 'อย่างไร WordPress กำหนดไฟล์ PHP หลัก' ตอบโดยตรงในหลัก 'เขียนปลั๊กอิน' คำแนะนำในส่วนหัวของไฟล์
icc97

คำตอบ:


12

Wordpress พิจารณาว่า "ไฟล์ปลั๊กอินหลัก" อย่างไร

มันเป็นไฟล์ในปลั๊กอินของคุณที่มีความคิดเห็นส่วนหัวของปลั๊กอิน

/**
 * Plugin Name: A fresh example
 * Plugin URI:  http://example.com
 * Description: Foo makes a bar
 * Version:     2012-06-14.1426
 * Author:      John Doe
 * Author URI:  http://example.com
 * TextDomain:  your_textdomain
 * License:     MIT
 * LicenseURI:  http://www.opensource.org/licenses/mit-license.php
 */

คำถามที่ 1: เป็นเรื่องถูกกฎหมาย / รองรับการมีปลั๊กอินที่มีโครงสร้างเช่นนี้หรือไม่:

ใช่. ทุกโครงสร้างไดเรกทอรี (เท่าที่ได้รับการสนับสนุนโดยเซิร์ฟเวอร์) เป็นกฎหมาย

Q2: ถ้าเป็นเช่นนั้น wordpress จะกำหนดว่าไฟล์ php ใดเป็นไฟล์ปลั๊กอินหลัก

ดูด้านบน↑

Q3: การใช้ไดเรกทอรีย่อย (เช่น inc / ในตัวอย่างข้างต้น) เป็นข้อกำหนดเมื่อโค้ด PHP ครอบคลุมหลายโมดูลหรือไม่?

ต้องการ? ไม่ดีกว่าที่จะอ่าน: ใช่ บำรุงรักษาง่ายกว่า: ใช่

Q4: จริงหรือไม่ที่ควรมีไฟล์สูงสุดหนึ่งไฟล์ php ในไดเรกทอรีปลั๊กอินหลัก

เลขที่

สรุป

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

ตัวอย่าง

ฉันต่อท้ายเป็นการส่วนตัว.class.phpเมื่อฉันได้เข้าเรียน ฉันยังตั้งชื่อไฟล์ของฉันเหมือนชั้นเรียน เหตุผลง่าย: "ไฟล์ปลั๊กอินหลัก" ของฉัน - ซึ่งเป็นbootstrapชั้นเรียนของฉันโดยปกติจะใส่ใจเกี่ยวกับการโหลดทุกสิ่งที่จำเป็น

// inside my PREFIX_bootstrap class:
public static $includes = array(
    'settings'          => false // Parent class - no need to hook
   ,'settings_extended' => true  // Extending class - hooks static init() on `init` hook
);

public function construct()
{
    // The prefix for every class in my plugin
    $prefix = 'my_class_prefix_';

    foreach ( $this->files as $handle => $hook )
    {
        require_once plugin_dir_path( __FILE__ )."{$handle}.class.php";

        if ( ! $hook )
            continue;

        $class = $prefix.$handle;
        class_exists( $class ) AND add_action( 'init', array( $class, 'init' ), 1 );
    }
}

นี่หมายความว่าคลาสและไฟล์ของฉันมีชื่อดังนี้:

  • settings.class.php และ settings_extended.class.php
  • my_class_prefix_settings และ my_class_prefix_settings_extended

ฉันยังทำหน้าที่จัดระเบียบไดเรกทอรีพื้นฐานเช่นจัดเก็บjs/css/imgไฟล์ทั้งหมดในไดเรกทอรีที่มีชื่อเช่นนี้

บางคนใช้ (สำหรับปลั๊กอินขนาดใหญ่) inc/includes/assets/extensions/lib/etc.โฟลเดอร์ที่มีชื่อ ฉันขอแนะนำให้ใช้โฟลเดอร์ย่อยสำหรับปลั๊กอินขนาดใหญ่เท่านั้น หากคุณมีสิ่งเพิ่มเติมเช่นวิดเจ็ต ฯลฯ คุณสามารถใช้โฟลเดอร์ย่อยเฉพาะสำหรับพวกเขาได้

คำสุดท้าย:ไม่ไม่มีสิ่งที่คุณพบว่าเป็นความจริงคำแนะนำเหล่านั้น (เช่นเดียวกับที่ฉันแสดงให้คุณ)


1
ขอบคุณสำหรับคำตอบนี้ ดังนั้นความคิดเห็นส่วนหัวเป็นวิธีที่ wordpress พบ "ไฟล์ปลั๊กอินหลัก" มันโหลดเพียงอันเดียวที่ถูกต้อง? และแน่นอนไฟล์ php ในเครืออื่น ๆ ที่จำเป็นหรือรวมอยู่ในไฟล์นั้น แก้ไข? ฉันคิดว่ามันไม่ชัดเจนสำหรับฉันใน codex ฉันเพิ่งอ่านมันอีกครั้งและฉันเห็นสิ่งที่กำลังพูดอยู่ตอนนี้ ฉันหวังว่ามันจะพูดอะไรบางอย่างเช่น "Wordpress มองหาไฟล์เดียวในไฟล์ซิปของคุณที่มีส่วนหัวพิเศษนี้มันจะไม่สนใจไฟล์อื่น ๆ ในไฟล์ zip" หรือบางสิ่งบางอย่างตามสายเหล่านั้น อย่างไรก็ตามขอบคุณ
Cheeso

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