web-dev-qa-db-de.com

plugin_action_links _ {$ plugin_file} ist nicht in der Haupt-Plugin-Datei enthalten

Ich entwickle ein Plugin und habe seinen Code in separaten Dateien organisiert. Die Admin-Funktionsdatei befindet sich in einem /admin-Unterordner. In dieser Datei reihe ich Skripte und Stile ein, füge Meta-Boxen hinzu und so weiter.

Ich möchte mit dem Hook plugin_action_links_{$plugin_file} einige Aktionslinks zum Bildschirm der installierten Plugins hinzufügen, aber ich kann es nicht zum Laufen bringen.

Da dieser Hook außerhalb der Haupt-Plugin-Datei hinzugefügt wird, funktioniert das nicht:

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

Meine Frage ist, wie kann ich die plugin_basename() der Haupt-Plugin-Datei aus einer anderen Datei in einem Unterordner abrufen? Ist es möglich?

Danke im Voraus

1
leemon

Sie können den Basisnamen einfach in einer Variablen in der Hauptdatei speichern und auf diese Variable in der Verwaltungsdatei verweisen.

Wenn Sie Klassen verwenden, die ich aus Ihrem Beispielcode ermittele, können Sie einfach eine statische Eigenschaft in Ihrer Hauptklasse erstellen und auf die in der Admin-Klasse verweisen:

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