Вызов функции-члена добавить тег перезаписи() при нулевом значении


После прочтения этого я начал перемещать свой CPT (а именно "evento") в новый плагин (раньше он был в теме на основе костей). Новый плагин в основном представляет собой свежую папку стандартного плагина WP, в которой я только что переименовал все "имена плагинов" в "dogmaweb", что является названием моего нового плагина. Пожалуйста, имейте в виду, что я новичок, когда дело доходит до кодирования WordPress.

Я скопировал три файла из темы в плагин папка: первая для регистрации CPT (library/evento-post-type.php), второй для одного поста (/single_evento-type.php ) и третий для архива CPT (/archive_evento-type.php). Я также сохранил структуру каталогов костей для этих файлов в плагине.

Затем я подключил регистрацию CPT к своему классу плагинов (includes/class-dogmaweb.php ) добавление следующего в свою функцию load_dependencies():

require_once plugin_dir_path( dirname( __FILE__ ) ) . 'library/evento-post-type.php';

В этом файле регистрируется новый CPT с вызовом кому:

add_action( 'init', 'evento_post_type');

А затем он также регистрирует две таксономии:

register_taxonomy( 'evento_cat', array('evento_type') ...
register_taxonomy( 'evento_tag', array('evento_type') ...

После переноса файлов из темы в плагин весь сайт перестал работать. Я получаю только "500 внутренних ошибок сервера" от Apache. Журнал ошибок Apache показывает:

[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

Однако тот же код в теме "Кости" работает правильно. Я понимаю, что WP пытается вызвать add_rewrite_tag() по нулевой ссылке, например, $this равно null, и это заставляет меня подозревать, что мне следует подключить таксономию типа сообщения "evento" регистрация в другом месте. Я только не знаю, где. Пожалуйста, обратите внимание, что строка 91 в моем коде соответствует первой регистрации таксономии, но я почти уверен, что то же самое произойдет и со второй.

Author: Lucio Crusca, 2015-12-01

1 answers

Хотя мне не нравится приписывать себе чужой ответ, мне также не нравится оставлять вопрос без ответа, когда ответ существует и он уже дан. Я надеюсь, Мило не будет возражать, если я скопирую ответ из его комментария.

Вызовы register_taxonomy должны быть подключены к init.

 22
Author: Lucio Crusca, 2015-12-08 15:14:23