8

私が構築したサイトは Advanced Custom Fields プラグインを使用しており、すべてが自分の Web ホストの localhost でうまく機能します。残念ながら、クライアントが購入したホスティング (GoDaddy 共有ホスティング) にサイトを移動したときに、Advanced Custom Fields プラグインの JavaScript および CSS ファイルが正しく読み込まれません。ソースを確認すると、問題は明らかです。次のパスを指しています。

http://www.clientsamazingwebsite.com/wp-content/plugins/home/content/06/10145906/html/wp-content/plugins/advanced-custom-fields/js/input-actions.js?ver=3.5. 7.2

(注意深く見ると、URL ではなく、サーバー上のファイルの実際のパスへの参照があることがわかります)

問題をプラグインの次の行までたどりました。

$this->dir = plugins_url('',__FILE__);

戻ってくるはずです/wp-content/plugins/advanced-custom-fields

代わりにそれは戻ってきます/wp-content/plugins/home/content/06/10145906/html/wp-content/plugins/advanced-custom-fields

適切なパスを指すようにプラグイン ファイルを編集しましたが、これらの変更はプラグインが更新されるたびに元に戻るため、長期的な解決策ではありません。

__FILE__魔法の定数がシンボリックリンクで期待どおりに機能しないと不平を言う人を見てきましたが、シンボリックリンクを作成していないことは確かです。これは GoDaddy を使用する際の制限ですか?

アップデート

__FILE__GoDaddy では、ローカル マシンや他の Web サーバーとは異なるものが返されることに気付きました。2 台の稼働中のマシンの 1 つは、ファイル システムのルート (つまり/srv/www/sitename/public_html/file.php) からのフル パスを返しますが、GoDaddy では、返されるパスはホーム ディレクトリ ( /home/content/06/10145906/html/file.php) から始まります。

それが問題でしょうか?

4

5 に答える 5

4

ワードプレスコーデックスによると

You can either specify the $path argument as a hardcoded path relative to the
plugins directory, or conveniently pass __FILE__ as the second argument to make
the $path relative to the parent directory of the current PHP script file.

だから使って

plugins_url( basename( __DIR__ ) . '/path/to/plugin/asset.js' );

それ以外の

plugins_url( '/path/to/plugin/asset.js', __FILE__ );

私にとって許容できる回避策です。ただし、指定するほど機敏ではないかもしれません__FILE__

于 2013-10-25T08:32:21.370 に答える
1

あなたが試すことができます:

$this->dir = dirname(__FILE__);

新しいバージョンのPHPを実行している場合は、

$this->dir = __DIR__;

于 2013-01-18T05:07:21.640 に答える
0

サーバーの移転により、これが発生したと思います。

WordPress 設定ページをチェックして、WordPress の URL が移動後の新しい URL を反映していることを確認してください。

それがすべて正しい場合、何かが WordPress の定数の 1 つ (WP_PLUGIN_URL またはそれを設定するために使用される前駆定数の 1 つ) をオーバーライドしています。それを探す場所は wp-config.php ファイルです。

于 2013-01-18T05:06:11.257 に答える
0

これは、現在 PHP で行われている可能性があります (以前のバージョンではそうではありませんでした) は、シンボリック リンクなどを無視する「物理的な」アドレスを常に返します__FILE__。神 (および PHP 開発者) は、この動作を変更するための PHP の設定がない理由を知っていますが、 WP はそのパスを登録済みの URL と比較するため、URL の「残り」を返すという通常の動作を変更し、代わりにフル パスを返します。

__FILE__これは基本的に、ライブラリをロードするための URL パスを作成するために使用することを Codex が開発者に推奨している限り、WP とシンボリック リンクがうまく機能しないことを意味します。

于 2014-02-05T18:32:41.400 に答える
0

これで問題が解決するはずです:

define('WP_CONTENT_DIR', realpath($_SERVER['DOCUMENT_ROOT'] . '/wp-content'));
于 2016-08-07T15:19:15.497 に答える