Ich versuche Composer zu verwenden, um Dateien für ein einfaches Wordpress-Plugin zu verwalten. Der Plugin-Code verwendet drei Dateien:Composer Autoload mit falschen Versionen
dmg_custom_menu_widget.php
- die Datei, die Klassen und registriert das Widget mit Wordpress erfordertWP_Custom_Menu_Widget.php
- die wichtigste Widget-KlasseWP_Widget_Base.php
- erweitert durchWP_Custom_Menu_Widget.php
I Verwenden Sie Composer, um den Plugin-Code zu installieren und die Abhängigkeit zu holen.
Wenn Dateien von dmg_custom_menu_widget.php
mit dem Komponisten Autoload-Datei wie folgt enthalten:
require_once 'vendor/autoload.php';
ich einen bekommen ‚Fatal error: Call to undefined Methode ...‘, weil es eine alte Version von WP_Widget_Base.php
wird einschließlich verwendet durch ein anderes Widget-Plugin außerhalb des Basisverzeichnisses von dmg-custom-menu-widget.
Wenn Dateien direkt von dmg_custom_menu_widget.php
enthalten sind, unter Verwendung von:
require_once 'vendor/DMG/WP_Widget_Base/src/WP_Widget_Base.php';
require_once 'src/WP_Custom_Menu_Widget.php';
ich keine Fehler, da die richtige Datei enthalten ist.
Dies ist der entsprechende Ordnerstruktur:
plugins/
dmg-related-pages-widget/
vendor/
DMG/
WP_Widget_Base/
src/
WP_Widget_Base.php <- File being included
dmg-custom-menu-widget/
dmg_custom_menu_widget.php <- Calls require_once 'vendor/autoload.php'
vendor/
autoload.php <- Composer autoload file
DMG/
WP_Widget_Base/
src/
WP_Widget_Base.php <- File that should be included
Zusatzinfo
Wenn der Ordner dmg-related-pages-widget
gelöscht wird, wird die richtige Datei enthalten.
Composer.json
{
"name" : "DMG/WP_Custom_Menu_Widget",
"license" : "GPL-3.0",
"repositories":
[
{
"type": "git",
"url": "https://[email protected]/dgifford/wp_widget_base.git"
}
],
"require":
{
"DMG/WP_Widget_Base" : "dev-master"
},
"autoload":
{
"classmap":
[
"src/WP_Custom_Menu_Widget.php"
]
}
}
Können Sie hinzufügen 'composer.json'? Ich denke du hast das Autoloading für dieses Plugin selbst hinzugefügt, oder? – vfsoraki
Ich habe die Datei composer.json hinzugefügt. Autoloading erfolgt durch den Komponisten. – theHands