WP_CONTENT_DIR 및 WP_PLUGIN_DIR 대신 무엇을 사용해야합니까?


15

플러그인 및 컨텐츠 디렉토리 결정에 대한 WordPress 설명서에는 다음 같이 명시되어 있습니다.

WordPress는 컨텐츠 및 플러그인 디렉토리의 경로를 결정할 때 다음 상수를 사용합니다. 이것들은 플러그인이나 테마에 의해 직접 사용되어서는 안되며 , 완성도를 위해 여기에 나열되어 있습니다.

그것은 목록으로 진행 WP_CONTENT_DIR하고 WP_PLUGIN_DIR테마와 플러그인 개발자는이 때문에 아마도, 사용하지 않도록 상수 중 :

WordPress에서는 사용자가 원하는 위치에 wp-content 디렉토리를 배치 할 수 있으므로 플러그인이 wp-content / plugins에 있거나 업로드가 wp-content / uploads에 있거나 테마가 wp- 내용 / 테마.

마크 자 퀴스는 여기에 코멘트 하는 상수를 사용할 수없는 것을 :

WP_PLUGIN_URL 또는 WP_PLUGIN_DIR을 사용하지 마십시오. 플러그인이 플러그인 디렉토리에 없을 수 있습니다.

그렇다면 이러한 상수를 사용하지 않고 플러그인, wp-content 및 테마 폴더의 전체 경로를 참조하는 방법은 무엇입니까?

간단한 예로, 설치된 모든 플러그인의 전체 경로를 출력하려면 다음과 같이하십시오.

<?php
$plugins = get_plugins();

foreach ($plugins as $file => $details) {
    echo WP_PLUGIN_DIR . '/' . $file . '<br>';
}

다음과 같은 목록을 생성합니다.

/var/www/wp-content/plugins/akismet/akismet.php
/var/www/wp-content/plugins/debug-bar/debug-bar.php
/var/www/wp-content/plugins/hello.php

(예를 들어 사용자가 사이트 백업의 일부로 플러그인을 선택적으로 보관할 수 있도록 플러그인을 작성하는 경우이 작업을 수행 할 수 있습니다.)

사용 WP_PLUGIN_DIR이 잘못되면 제안 된 대안은 무엇입니까? wp_upload_dir()내가 찾을 수있는 플러그인, 테마 및 wp-content 폴더에 해당하는 것은 없으므로 잠재적으로 방황하는 테마 및 플러그인 루트 디렉토리를 참조하는 것이 문제가됩니다.



2
@CharlesClarkson 내 질문의 첫 문장에서 해당 페이지를 참조합니다. 위의 상수를 사용하지 말라고하지만 다음과 같은 대안을 제안하지는 않습니다.WP_PLUGIN_DIR 여기에 내 질문이 있습니다.
Nick

답변:


17

현재 경로 또는 더 깊은 중첩의 참조 파일

현재 경로를 참조하려면

plugin_dir_path( __FILE__ )."further/nesting/here.css";

Plugins and Themes 에서 작동합니다 .

플러그인의 URl / URi 참조

플러그인 또는 테마 파일을 가리 키려면

plugins_url( "path/to/file", __FILE__ );

플러그인에서만 작동합니다

wp-admin폴더의 URl / URi 참조

항상을 가리 킵니다 admin_url( 'some/path' );. 또한 get_admin_url()있습니다.

wp-includes폴더의 URl / Uri 참조

그들에게 includes_url( 'some/path' );

사이트 홈과 관련된 URl / URi

home_url( 'etc' );또는 있습니다 get_home_url(). 유사은 get_site_url()site_url(). 그런 다음도 있습니다 network_home_url(). 그리고 당신은있어network_admin_url()

wp-content 또는 이름이 바뀐 디렉토리

wp-content폴더 이름을 재정의 할 수 있습니다 . 따라서 당신은content_url() 거기에서 합니다.

플러그인 폴더 URL을 얻는 방법?

WP_PLUGIN_DIR 사용이 잘못되면 제안 된 대안은 무엇입니까?

간단히 사용 plugins_url()매개 변수없이 하십시오.

플러그인에 사용하면 MU 플러그인에서도 작동합니다.

편집 # 1 현재 플러그인의 경로에 관심이 있다면plugin_basename(); .

편집 # 2 모든 sidewide active plugin에 관심이 있다면wp_get_active_network_plugins(); .

다중 사이트가 아닌 경우로 이동하십시오 wp_get_active_and_valid_plugins();. 다중 사이트 / 네트워크가 고려됩니다. 다중 사이트가 아니지만 sunrise.php드롭 인 이있는 경우이를 고려할 것 입니다.

당신이 를 통해뿐만 아니라 그들을 검색 get_option( 'active_plugins' );하는, 권장되지 는 여러 차례 발생하는 계정으로 필터 및 플러그인 검증을하지 않는 한.


추가 자료

이 목록은 계속됩니다. 자세한 정보 는 QueryPosts.com 의 검색 결과 를 참조하십시오.

기사 는 모든 경로에 대해 깊이있게 다룹니다.


3
이것에 감사하지만 귀하의 답변은 내가 관심있는 절대 서버 경로가 아닌 URL을 처리하는 것 같습니다. 예를 들어 plugins_url()서버의 디렉토리에 대한 전체 경로가 아닌 플러그인 폴더의 URL을 반환합니다. 내가 모르는 디렉토리를 처리하는 비슷한 기능이 있습니까? 아니면 WP_PLUGIN_DIR상수를 잘못 사용하지 않는 충고가 있습니까?
Nick

(설명하는 데 도움이되는 경우 내 코드가 포함 된 플러그인 이외의 설치된 플러그인의 전체 경로를 찾는 데 특히 관심이 있습니다.)
Nick

@Nick 업데이트 참조.
kaiser

"모든 플러그인에 대해 깊이있게 다루는 기사"는 더 이상 사용할 수 없습니다. 그리고 여전히을 사용하지 않고 플러그인 디렉토리의 절대 경로를 얻는 방법을 이해할 수 없습니다 WP_PLUGIN_DIR.
XedinUnknown

4
  1. 현재 플러그인의 디렉토리 서버 경로를 반환합니다 :

    plugin_dir_path(__FILE__)
    
    // example: /home/myserver/public_html/wordpress_install/wp-content/plugins/exampleplugin/

    참조 : https://codex.wordpress.org/Function_Reference/plugin_dir_path

    혼동하지 마십시오 :

    plugins_dir_path(__FILE__)

    (복수의 "plugin s "에 주목하십시오 .)

  2. 플러그인 디렉토리 이름을 반환하지 않으려면 제거해야합니다. 플러그인 디렉토리와 파일 이름을 반환하는 함수는 다음과 같습니다.

    plugin_basename(__FILE__)
    
    // example: exampleplugin/exampleplugin.php
  3. 그러나 물론 우리는 플러그인의 파일 이름도 원하지 않기 때문에 plugin_basename(__FILE__)먼저 제거해야합니다 . 플러그인의 파일 이름을 반환하려면

    basename(__FILE__)
    
    // example: exampleplugin.php
  4. 따라서 이것을 사용하여 플러그인 디렉토리 의 경로를 구성하려면 다음 str_replace()과 같은 함수를 사용할 수 있습니다 .

    $myBnm = basename(__FILE__); // value: exampleplugin.php
    $myDir = plugin_basename(__FILE__); // value: exampleplugin/exampleplugin.php
    $myStr = str_replace($myBnm,"",$myDir); // value: exampleplugin/
    $myPth = plugin_dir_path(__FILE__); // value: /home/myserver/public_html/wordpress_install/wp-content/plugins/exampleplugin/
    return str_replace($myStr,"",$myPth); // returns: /home/myserver/public_html/wordpress_install/wp-content/plugins/
  5. 그리고 필요할 경우, 그 마지막 줄은 물론 반복 사용을 위해 변수에 할당 될 수 있습니다.

    대신에:

    return str_replace($myStr,"",$myPth); // returns: /home/myserver/public_html/wordpress_install/wp-content/plugins/

    다음과 같은 것을 사용하십시오 :

    $thePlgDir = str_replace($myStr,"",$myPth); // returns: /home/myserver/public_html/wordpress_install/wp-content/plugins/

    그리고 나중에 필요할 때 :

    return $thePlgDir;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.