web-dev-qa-db-ja.com

メインプラグインファイルにないplugin_action_links _ {$ plugin_file}フック

私はプラグインを開発していて、そのコードを別々のファイルにまとめました。 admin functionsファイルは/adminサブフォルダーの中にあります。このファイルでは、スクリプトとスタイルをエンキューしたり、メタボックスを追加したりします。

plugin_action_links_{$plugin_file}フックを使ってインストールされているプラ​​グインの画面にアクションリンクを追加したいのですが、うまく動作しません。

このフックはメインのプラグインファイルの外側に追加されているので、うまくいきません。

add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ),  array( $this, 'add_action_links' ) );

私の質問は、サブフォルダ内の別のファイルからメインプラグインファイルのplugin_basename()を取得する方法です。出来ますか?

前もって感謝します

1
leemon

メインファイル内の変数にベース名を格納し、管理ファイル内でその変数を参照するだけです。

サンプルコードから決定したクラスを使用している場合は、メインクラスで静的プロパティを作成し、それを管理クラスで参照するだけです。

class My_Plugin {
    static $basename = null;

    public function __construct {
        $this->basename = plugin_basename(__FILE__);
    }
}

class My_Plugin_Admin {
    public function change_action_links() {
        add_filter( 'plugin_action_links_' . My_Plugin::$basename,  array( $this, 'add_action_links' ) );
    }
}
1
AncientRo