다른 플러그인으로 이동


10

플러그인 경로를 얻으려면 사용할 수 plugin_dir_path(__FILE__)있지만 플러그인 내에서 호출해야합니다.

플러그인 A 내에서 플러그인 B ( ) 의 경로를 어떻게 안정적으로 얻을 수 pluginb/pluginb.php있습니까?

편집 : 플러그인의 슬러그를 알고 있다고 가정합니다 (실제로는 플러그인을 얻을 수 있음 get_plugins()). 그러나 나는 그것이 일반적으로 작동하기를 원합니다.


이것이 모든 플러그인에 적용됩니까? 또는 하나 / 특히 몇 개입니까? 후자가 자신의 것입니까, 아니면 공개입니까?
TheDeadMedic

그래서 당신이 따르는 플러그인의 슬러그를 알고 있다고 가정합니다 : 예를 들어 pluginb/pluginb.php, 그러나 타사.
Stephen Harris

답변:


9

가장 좋은 추측은 다음과 같습니다.

if ( ! is_file( $dir = WPMU_PLUGIN_DIR . '/pluginb/pluginb.php' ) ) {
    if ( ! is_file( $dir = WP_PLUGIN_DIR . '/pluginb/pluginb.php' ) )
        $dir = null;
}

return $dir;

그러나 여기서 위험은 여전히 ​​플러그인의 "기본 이름"을 가정 한 것입니다. 잘 작성된 플러그인은 디렉토리 및 / 또는 기본 파일의 이름이 바뀌 었더라도 (어떤 이유로 든) 여전히 작동합니다.

어떤 내 원래의 코멘트로 돌아갑니다 -에 따라 어떤 플러그인 경로를 유지하기 위해이 플러그인 타사가 언급하고, 많은 저자가 자신의 방법 / 상수를 정의를 - 그것은 자신의 존재를 확인 및 대신 다음을 사용하는 것이 나을 (가능한 경우 ).


아 좋아, 나는 질문을 업데이트했다 :). 플러그인 슬러그를 얻을 수 있습니다 get_plugins(). 사용 사례에는 충분합니다. 특정 플러그인을 사용하고 있지만 더 나은 것이 없다면 이름에서 플러그인을 검색 할 수 있습니다 get_plugins().
Stephen Harris

+1 상수를 사용하지 않는 것이 이상적입니다. 그러나이 솔루션을 사용할 때는 최소한 다음을 확인하십시오.
Stephen Harris

2

따라서 한 가지 방법은 plugin_dir_path()현재 플러그인 내에서 호출 하고 자신의 플러그인 디렉토리 이름을 플러그인의 슬러그 이름으로 바꿉니다 ( pluginb/pluginb.php).

그래서 우리 내 플러그인 plugina/plugina.php,

$plugin_b = str_replace('plugina/','pluginb/pluginb.php',plugin_dir_path(__FILE__));
echo $plugin_b; //Prints path/to/pluginb/pluginb.php';

플러그인 B가 A와 동일한 디렉토리에 있다고 가정하기 때문에 (이것은 MU 플러그인 일 필요는 없습니다) 가정하기 때문에 이것에 대해 조언 할 것입니다.
TheDeadMedic

고마워, 내가 놓칠만한 것이있을 것이라고 생각했다 :)
Stephen Harris

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