wake-up-neo.com

Rufen Sie eine Mitgliedsfunktion add_rewrite_tag () auf null auf

Nachdem ich this gelesen hatte, begann ich, mein CPT (nämlich "evento") auf ein neues Plugin zu verschieben (es befand sich zuvor in einem Bones - basierten Theme). Das neue Plugin ist im Grunde genommen ein frischer WP Boilerplate Plugin Ordner, in dem ich alle "Plugin-Namen" in "dogmaweb" umbenannt habe, was der Name meines neuen Plugins ist. Bitte denken Sie daran, ich bin ein Anfänger, wenn es um WordPress-Codierung geht.

Ich habe drei Dateien vom Theme in den Plugin-Ordner kopiert: die erste für die CPT-Registrierung (library/evento-post-type.php), die zweite für den einzelnen Post (/single_evento-type.php) und die dritte für die CPT-Archiv (/archive_evento-type.php). Ich habe auch die Bones-Verzeichnisstruktur für diese Dateien im Plugin beibehalten.

Ich habe dann die CPT-Registrierung in meine Plugin-Klasse (includes/class-dogmaweb.php) eingebunden und Folgendes zu ihrer load_dependencies () -Funktion 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 Design 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

Derselbe Code im Bones-Design funktioniert jedoch ordnungsgemäß. Ich verstehe, dass WP versucht, add_rewrite_tag () für eine Nullreferenz aufzurufen, z. $ this ist null, und das lässt mich den Verdacht aufkommen, dass ich meine Registrierung für "evento" -Posttyp-Taxonomien an einer anderen Stelle vornehmen sollte. Ich weiß nur nicht wo. Bitte beachten Sie, dass Zeile 91 in meinem Code mit der ersten Taxonomie-Registrierung übereinstimmt, aber ich bin mir ziemlich sicher, dass dies auch für die zweite passieren würde.

5
Lucio Crusca

Ich mag es nicht, die Antwort eines anderen anzurechnen, aber ich mag es auch nicht, eine Frage ohne Antwort zu lassen, wenn die Antwort vorhanden ist und sie bereits gegeben wurde. Ich hoffe, dass es Milo nichts ausmacht, wenn ich die Antwort aus seinem Kommentar kopiere.

Die register_taxonomy-Aufrufe sollten an init angehängt werden.

16
Lucio Crusca