2 ähnliche Plugins mit identischen Methoden – Fatal Error
-
Hallo,
ich versuche gerade 2 sehr ähnliche Plugins zu programmieren. U.a. legen beide jeweils einen eigenen PostType an. Zur besseren Übersicht habe ich auch etwas Code ausgelagert, das per „include_once“ geladen werden soll.
Damit ich das jeweils andere Plugin schnell updaten kann, habe ich die Methoden innerhalb verschiedener Klasse identisch benannt.
PHP antwortet mir hierzu jedoch mit einem „Fatal error“, genauer gesagt mit „
PHP Fatal error: Cannot redeclare register_posttype() (previously declared in [/geheimerpfad]/plugin1/includes/register_posttype.php:7) in [/geheimerpfad]/plugin2/includes/register_posttype.php on line [zeile]
Die Klassen inkl. Instanzierung meiner Plugins sehen wie folgt aus:
<?php // Plugin 1 include_once __DIR__ . '/includes/register_posttype.php'; class Plugin1 { function __construct() { add_action( 'init', 'register_posttype' ); } } $obj = new Plugin1(); ?>
bzw.
<?php // Plugin 2 include_once __DIR__ . '/includes/register_posttype.php'; class Plugin2 { function __construct() { add_action( 'init', 'register_posttype' ); } } $obj = new Plugin2(); ?>
Die „includes“-Ordner befindliche „register_posttype.php“ für Plugin 1 sieht wie folgt aus:
<?php function register_posttype() { // [...] register_post_type( 'posttype1', $args ); } ?>
Und die für Plugin 2 so:
<?php function register_posttype() { // [...] register_post_type( 'posttype2', $args ); } ?>
Es hat sich also lediglich das 1. Argument der „register_post_type()“ geändert. In „meiner“ register_posttype() [ohne unterstrich] wird zuvor noch die Variable „$args“ definiert.
Packe ich die Includes mit in die jeweiligen Klassen kommt ein noch größerer Fataler Error, sodass WordPress gar nicht mehr läuft
Ich gebe auch zu, noch nich über alle PHP-Basics zu verfügen, dennoch versuche ich mit diesen Plugins gerade zu „üben“ 😉
Kann mir zufällig jemand erklären, wie man soetwas richtig macht?
Schon mal vielen Dank im Vorraus!
Thomas
- Du musst angemeldet sein, um auf dieses Thema zu antworten.