it-swarm.com.ru

Вызов функции-члена add_rewrite_tag () со значением NULL

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

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

Затем я подключил регистрацию CPT к своему классу плагинов (include/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

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

5
Lucio Crusca

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

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

16
Lucio Crusca