Bagaimana HARUS direktori untuk plugin terstruktur?

9

Saya mendapatkan konsep plugin dasar. Saya telah membaca artikel Codex tentang Menulis Plugin

Artikel itu berbicara tentang "file plugin utama".

Bagaimana cara Wordpress menentukan "file plugin utama"?

T1:
Apakah legal / didukung untuk memiliki plugin yang terstruktur seperti ini:

  • pluginname /
  • pluginname / mainfile.php
  • pluginname / supportcode-1.php
  • pluginname / supportcode-2.php
  • pluginname / Readme.txt
  • dll ..

?

T2:
Jika demikian, bagaimana cara wordpress menentukan file php mana yang merupakan file plugin utama?


Saya telah melihat rekomendasi yang mengatakan "Saya menyusun kode saya dengan cara ini ":

  • pluginname /
  • pluginname / mainfile.php
  • pluginname / inc / supportcode-1.php
  • pluginname / inc / supportcode-2.php
  • pluginname / Readme.txt
  • dll ..

T3:
Apakah penggunaan subdirektori (seperti inc/dalam contoh di atas) merupakan persyaratan ketika kode PHP mencakup beberapa modul?

T4:
Apakah benar bahwa seharusnya ada SATU file php di direktori plugin utama?

Terima kasih.

Cheeso
sumber
Tentu saja pertanyaan pertama Anda 'Bagaimana WordPress menentukan file PHP utama' dijawab langsung di panduan utama 'Menulis plugin' pada header file
icc97

Jawaban:

12

Bagaimana cara Wordpress menentukan "file plugin utama"?

Ini adalah file di plugin Anda yang berisi komentar header plugin

/**
 * 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
 */

T1: Apakah legal / didukung untuk memiliki plugin yang terstruktur seperti ini:

Iya. Setiap struktur direktori (sejauh didukung oleh server) adalah sah.

T2: Jika demikian, bagaimana cara wordpress menentukan file php mana yang merupakan file plugin utama?

Lihat di atas ↑

T3: Apakah penggunaan subdirektori (seperti inc / dalam contoh di atas) merupakan persyaratan ketika kode PHP mencakup beberapa modul?

Kebutuhan? Tidak. Lebih enak dibaca: ya. Lebih mudah dirawat: Juga ya.

T4: Apakah benar bahwa seharusnya ada SATU file php di direktori plugin utama?

Tidak. Tidak.

Jumlahkan

Cara Anda mengatur file dan direktori sepenuhnya tergantung pada Anda, preferensi pribadi Anda dan tidak ada yang lain. Jika Anda ingin membuatnya lebih mudah untuk Anda pelihara dan bagi pengembang lain untuk menelusuri kode Anda, maka Anda harus menggunakan semacam organisasi file / direktori.

Contohnya

Saya pribadi menambahkan .class.phpsebagai ekstensi, ketika saya mendapat kelas di dalamnya. Saya juga memberi nama file saya tepat seperti kelas. Alasannya sederhana: "File plugin utama" saya - yang merupakan bootstrapkelas saya , biasanya peduli tentang memuat semua hal yang diperlukan.

// 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 );
    }
}

Ini berarti kelas dan file saya dinamai seperti berikut:

  • settings.class.php DAN settings_extended.class.php
  • my_class_prefix_settings DAN my_class_prefix_settings_extended

Saya juga melakukan beberapa organisasi direktori dasar, seperti menyimpan semua js/css/imgfile dalam direktori bernama seperti ini.

Beberapa orang menggunakan folder (untuk plugin yang lebih besar) yang diberi nama inc/includes/assets/extensions/lib/etc.. Saya akan merekomendasikan untuk menggunakan subfolder hanya untuk plugin besar. Jika Anda mendapatkan hal-hal tambahan seperti widget, dll., Maka Anda dapat menggunakan subfolder khusus untuknya.

Kata terakhir: Tidak, tidak ada yang Anda temukan benar , itu (seperti yang saya tunjukkan) hanyalah rekomendasi.

kaisar
sumber
1
Terima kasih atas jawaban ini. Jadi komentar header adalah cara wordpress menemukan "file plugin utama". Hanya memuat yang satu itu, benar? Dan tentu saja file php anak perusahaan lainnya yang diperlukan atau termasuk di dalamnya. Benar? Saya kira itu tidak jelas bagi saya dalam naskah kuno. Saya baru saja membacanya lagi, dan saya mengerti apa yang dikatakannya sekarang. Saya berharap ini akan mengatakan sesuatu seperti "Wordpress mencari satu file di zip Anda yang memiliki header khusus ini; ia mengabaikan file lain di zip." atau sesuatu di sepanjang garis itu. Pokoknya terima kasih.
Cheeso
Ya, itu hanya memuat file, yang Anda tentukan plus file "utama". Ketahuilah, bahwa ada kait yang memiliki bagian spesifik halaman, untuk mencegah pemuatan semuanya pada setiap permintaan.
kaiser