Nachdem ich dies gelesen hatte, begann ich mein CPT (nämlich "evento") auf ein neues Plugin zu verschieben (es war zuvor in einem Bones- basierten Thema). Das neue Plugin ist im Grunde ein neuer WP Boilerplate Plugin- Ordner, in dem ich gerade alle Vorkommen von "Plugin-Namen" in "Dogmaweb" umbenannt habe, was der Name meines neuen Plugins ist. Bitte denken Sie daran, dass ich ein Anfänger bin, wenn es um WordPress-Codierung geht.
Ich habe drei Dateien aus dem Thema in den Plugin-Ordner kopiert: die erste für die CPT-Registrierung (library / evento-post-type.php), die zweite für den einzelnen Beitrag (/single_evento-type.php) und die dritte für den CPT-Archiv (/archive_evento-type.php). Ich habe die Bones-Verzeichnisstruktur für diese Dateien auch im Plugin beibehalten.
Ich habe dann die CPT-Registrierung in meine Plugin-Klasse (include / class-dogmaweb.php) eingebunden und der Funktion load_dependencies () Folgendes hinzugefügt:
require_once plugin_dir_path( dirname( __FILE__ ) ) . 'library/evento-post-type.php';
Diese Datei registriert das neue CPT mit einem Aufruf an:
add_action( 'init', 'evento_post_type');
und dann werden auch zwei Taxonomien registriert:
register_taxonomy( 'evento_cat', array('evento_type') ...
register_taxonomy( 'evento_tag', array('evento_type') ...
Nachdem die Dateien vom Thema in das Plugin verschoben wurden, funktionierte die gesamte Site nicht mehr. Ich erhalte nur einen "500 Internal Server Error" von Apache. Das Apache-Fehlerprotokoll zeigt:
[Tue Dec 01 15:16:29.941885 2015] [:error] [pid 11123] [client 127.0.0.1:48572] PHP Fatal error: Call to a member function add_rewrite_tag() on null in /home/lucio/workspace/netbeans/wpsite/wp-includes/rewrite.php on line 54
[Tue Dec 01 15:16:29.941933 2015] [:error] [pid 11123] [client 127.0.0.1:48572] PHP Stack trace:
[Tue Dec 01 15:16:29.941941 2015] [:error] [pid 11123] [client 127.0.0.1:48572] PHP 1. {main}() /home/lucio/workspace/netbeans/wpsite/index.php:0
[Tue Dec 01 15:16:29.941955 2015] [:error] [pid 11123] [client 127.0.0.1:48572] PHP 2. require() /home/lucio/workspace/netbeans/wpsite/index.php:17
[Tue Dec 01 15:16:29.941960 2015] [:error] [pid 11123] [client 127.0.0.1:48572] PHP 3. require_once() /home/lucio/workspace/netbeans/wpsite/wp-blog-header.php:12
[Tue Dec 01 15:16:29.941964 2015] [:error] [pid 11123] [client 127.0.0.1:48572] PHP 4. require_once() /home/lucio/workspace/netbeans/wpsite/wp-load.php:37
[Tue Dec 01 15:16:29.941968 2015] [:error] [pid 11123] [client 127.0.0.1:48572] PHP 5. require_once() /home/lucio/workspace/netbeans/wpsite/wp-config.php:91
[Tue Dec 01 15:16:29.941972 2015] [:error] [pid 11123] [client 127.0.0.1:48572] PHP 6. include_once() /home/lucio/workspace/netbeans/wpsite/wp-settings.php:215
[Tue Dec 01 15:16:29.941975 2015] [:error] [pid 11123] [client 127.0.0.1:48572] PHP 7. run_dogmaweb() /home/lucio/workspace/netbeans/wpsite/wp-content/plugins/dogmaweb/dogmaweb.php:75
[Tue Dec 01 15:16:29.941980 2015] [:error] [pid 11123] [client 127.0.0.1:48572] PHP 8. Dogmaweb->__construct() /home/lucio/workspace/netbeans/wpsite/wp-content/plugins/dogmaweb/dogmaweb.php:71
[Tue Dec 01 15:16:29.941985 2015] [:error] [pid 11123] [client 127.0.0.1:48572] PHP 9. Dogmaweb->load_dependencies() /home/lucio/workspace/netbeans/wpsite/wp-content/plugins/dogmaweb/includes/class-dogmaweb.php:74
[Tue Dec 01 15:16:29.941989 2015] [:error] [pid 11123] [client 127.0.0.1:48572] PHP 10. require_once() /home/lucio/workspace/netbeans/wpsite/wp-content/plugins/dogmaweb/includes/class-dogmaweb.php:122
[Tue Dec 01 15:16:29.941993 2015] [:error] [pid 11123] [client 127.0.0.1:48572] PHP 11. register_taxonomy() /home/lucio/workspace/netbeans/wpsite/wp-content/plugins/dogmaweb/library/evento-post-type.php:91
[Tue Dec 01 15:16:29.941997 2015] [:error] [pid 11123] [client 127.0.0.1:48572] PHP 12. add_rewrite_tag() /home/lucio/workspace/netbeans/wpsite/wp-includes/taxonomy.php:389
Der gleiche Code im Bones-Design funktioniert jedoch ordnungsgemäß. Ich verstehe, dass WP versucht, add_rewrite_tag () für eine Nullreferenz aufzurufen, z. B. $ this ist null, und das lässt mich vermuten, dass ich meine Taxonomie-Registrierung vom Typ "evento" an einer anderen Stelle einbinden sollte. Ich weiß nur nicht wo. Bitte beachten Sie, dass Zeile 91 in meinem Code mit der ersten Taxonomieregistrierung übereinstimmt, aber ich bin mir ziemlich sicher, dass dies auch für die zweite passieren würde.
quelle
register_taxonomy
Anrufe auch innerhalb derevento_post_type
Funktion? Die Registrierung der Taxonomie sollte mit verknüpft seininit
.Antworten:
Ich mag es nicht, die Antwort eines anderen zu würdigen, aber ich mag es auch nicht, eine Frage ohne Antwort zu lassen, wenn die Antwort existiert und sie bereits gegeben wurde. Ich hoffe, Milo macht es nichts aus, wenn ich die Antwort aus seinem Kommentar kopiere.
Die
register_taxonomy
Anrufe sollten mit verbunden seininit
.quelle