플러그인의 디렉토리는 어떻게 구성되어야합니까?


9

기본 플러그인 개념을 얻었습니다. 플러그인 작성에 관한 코덱스 기사를 읽었습니다.

이 기사에서는 "주 플러그인 파일"에 대해 설명합니다.

Wordpress는 "메인 플러그인 파일"을 어떻게 결정합니까?

Q1 : 다음
과 같이 구성되는 플러그인을 갖는 것이 합법적이고 지원 됩니까 ?

  • 플러그인 이름 /
  • pluginname / mainfile.php
  • 플러그인 이름 /supportingcode-1.php
  • 플러그인 이름 /supportingcode-2.php
  • pluginname / Readme.txt
  • 기타..

?

Q2 :
그렇다면 워드 프레스는 어떤 플러그인 파일이 메인 플러그인 파일인지 어떻게 결정합니까?


"내 코드를 다음과 같이 구성합니다"라는 추천을 보았습니다 .

  • 플러그인 이름 /
  • pluginname / mainfile.php
  • pluginname / inc / supportingcode-1.php
  • pluginname / inc / supportingcode-2.php
  • pluginname / Readme.txt
  • 기타..

Q3 : PHP 코드가 여러 모듈에 걸쳐있을 때
하위 디렉토리 ( inc/위의 예에서와 같이)를 사용해야 합니까?

Q4 :
메인 플러그인 디렉토리에 최대 하나의 PHP 파일이 있어야합니까?

감사.


확실히 첫 번째 질문 인 '워드 프레스가 어떻게 메인 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
 */

Q1 : 다음과 같이 구성되는 플러그인을 갖는 것이 합법적이고 지원됩니까?

예. 서버가 지원하는 한 모든 디렉토리 구조는 합법적입니다.

Q2 : 그렇다면 워드 프레스는 어떤 플러그인 파일이 메인 플러그인 파일인지 어떻게 결정합니까?

↑ 위 참조

Q3 : PHP 코드가 여러 모듈에 걸쳐있을 때 하위 디렉토리 (위의 예에서 inc /와 같은)를 사용해야합니까?

요구 사항? 아니요. 더 읽기 좋습니다 : 예. 더 쉬운 유지 보수 : 또한 그렇습니다.

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.phpsettings_extended.class.php
  • my_class_prefix_settingsmy_class_prefix_settings_extended

나는 또한 모든 것을 저장하는 것과 같은 기본적인 디렉토리 구성을 수행합니다. js/css/img 이름이 같은 디렉토리에 파일을 합니다.

어떤 사람들은 (더 큰 플러그인을 위해)이라는 폴더를 사용합니다 inc/includes/assets/extensions/lib/etc.. 큰 플러그인에만 하위 폴더를 사용하는 것이 좋습니다. 위젯 등과 같은 추가 항목이있는 경우 특정 하위 폴더를 사용할 수 있습니다.

마지막 단어 : 아니오, 당신이 찾은 것은 사실 이 아니며 , 내가 보여준 것들과 같은 것은 권장 사항 일뿐입니다.


1
이 답변에 감사드립니다. 헤더 주석은 워드 프레스가 "메인 플러그인 파일"을 찾는 방식입니다. 그 중 하나만로드합니다. 맞습니까? 물론 해당 파일에 필요하거나 포함 된 다른 보조 PHP 파일도 있습니다. 옳은? 나는 그것이 코덱스에서 나에게 분명하지 않았다고 생각한다. 난 그냥 다시 읽고 지금 무슨 말을하는지 봅니다. "Wordpress에서이 특수 헤더가있는 zip 파일을 찾습니다. zip의 다른 파일은 무시합니다." 또는 그 라인을 따라 뭔가. 어쨌든 고마워.
Cheeso

예, 지정한 파일과 "주"파일 만로드합니다. 모든 요청에 ​​모든 항목을로드하지 못하도록 페이지 특정 부품이있는 후크가 있습니다.
카이저
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.