web-dev-qa-db-ja.com

dirname(__FILE__)がプラグイン内で誤ったディレクトリを返す

私のプラグインの中にAdvanced Custom Fieldsファイルを追加しています。プラグインに含めることの一部は、dirname(__FILE__)を使用してデフォルトディレクトリを変更することです。

ステップ3では、include_onceは正常に機能します。そのため、ACFは動作しますが、スタイルシートやスクリプトは必要ありません。ステップ1と2で、ACFが要求するスタイルシートとスクリプトについて次のようになるからです。

http://example.com/templates/wp-starter/nfs/c05/h03/mnt/70376/domains/example.com/html/templates/wp-starter/wp-content/plugins/simple/acf/css/global.css?ver=5.0.0

これは私が得たいものです:

http://markrummel.com/templates/wp-starter/wp-content/plugins/simple/acf/css/global.css?ver=5.0.0

私はMedia Templeのグリッドサーバー(共有ホスティング)を使用しています。

これが私のプラグインの関連コードです。

// 1. Customize ACF path
add_filter('acf/settings/path', 'my_acf_settings_path');

function my_acf_settings_path( $path ) {
    // update path
    $path = dirname( __FILE__ ) . '/acf/';

    // return
    return $path;  
}

// 2. Customize ACF dir
add_filter('acf/settings/dir', 'my_acf_settings_dir');

function my_acf_settings_dir( $dir ) {
    // update path
    $dir = dirname( __FILE__ ) . '/acf/';

    // return
    return $dir;  
}

// 3. Include ACF
include_once( dirname( __FILE__ ) . '/acf/acf.php' );

正しいディレクトリを取得するにはどうすればよいですか?

1
Mark Rummel

ステップ2で$dir = plugins_url() . '/simple/acf/';を使用して問題を解決しました。それ以外はすべて同じです。

// 2. Customize ACF dir
add_filter('acf/settings/dir', 'my_acf_settings_dir');

function my_acf_settings_dir( $dir ) { 
  // update path
  $dir = plugins_url() . '/simple/acf/';

  // return
  return $dir; 
}
1
Mark Rummel