Rufen Sie eine Mitgliedsfunktion add_rewrite_tag () auf null auf

9

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.

Lucio Crusca
quelle
4
Sind Ihre register_taxonomyAnrufe auch innerhalb der evento_post_typeFunktion? Die Registrierung der Taxonomie sollte mit verknüpft sein init.
Milo
@ Milo das war das Problem. Wenn Sie daraus eine Antwort machen, kann ich sie akzeptieren, danke.
Lucio Crusca

Antworten:

21

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_taxonomyAnrufe sollten mit verbunden sein init.

Lucio Crusca
quelle