一言で言えば、私の質問は、「実行中のスクリプトの絶対パスをどのように変換するのですか。
/home/content/xx/xxxxxxxx/html/wp-content/plugins/MY_PLUGIN_DIR/MY_PLUGIN/MY_PLUGIN.PHP
または
/home/content/xx/xxxxxxxx/html/wp-content/themes/MY_THEME/functions.php
絶対URLへ」
http://example.com/wp-content/plugins/MY_PLUGIN_DIR/MY_PLUGIN.PHP
または
http://example.com/wp-content/themes/MY_THEME/functions.php
実際のスクリプト名さえも必要としません。それが入っているディレクトリへのパスだけです。
プラグイン用のオプションページの作成を非常に簡単にするクラスを作成しました。 Settings APIを介してオプションを登録/追加するという面倒なことは(まだ)行われていません。
クラスのインスタンス化で渡される最小限のオプションでこれらのことを行います。
私はプラグインだけを念頭に置いてこのクラスを作成しましたが、相対参照からURLを生成することを除いて、それもテーマのために箱から出して動作することに気付きました。今、私は使っています
$my_url = plugins_url('/', __FILE__)
ユーザーが相対URLを入力した場合にのみ、オプションページに関連付けられているスタイルシート、スクリプトファイル(.js)、およびメニューアイコンファイルのURLを生成します。絶対URLを入力しても、私は触れません。例:'icon_url' => 'images/my-icon.png'
をオプションとして含めると、クラスはそれをに変換します。
http://example.com/wp-content/plugins/MY_PLUGIN_DIR/MY_PLUGIN/images/my-icon.png
しかし、このクラスをテーマにも使えるようにすることにしたので、私はplugins_url
を使うことができないことに気づきました。私は、このクラスがプラグインまたはテーマのどちらに使用されるのかをユーザーに強制的に指定させないようにしています。
私が使用できるplugins_url()
のようなWordPressの方法はありますか?
現在のテーマの場合は get_stylesheet_directory_uri() 、またはの場合は get_template_directory_uri() 子テーマの親テーマ、それにファイルパスを追加します。
$url = get_stylesheet_directory_uri() . '/images/my-icon.png';
$url = get_template_directory_uri() . '/images/my-icon.png';
編集:自分がプラグイン、親テーマ、子テーマのいずれであるかを判断するには、(dirname(__FILE__)
を介して)現在のフォルダを plugin_dir_path()と比較します 、 get_template_directory() 、 get_stylesheet_directory() 。
あなたのwp-config.php
ファイルで、最後にそれはABSPATH
をwpルートフォルダになるように定義するべきです。それから、あなたのファイルパスからそれをsite_url
に置き換えることができます(あるいは、代わりにtheme/plugin/uploadディレクトリのパスをチェックしたなら、 https://にリストされた適切なURL関数codex.wordpress.org/Function_Reference/plugin_dir_url#Related )