Gọi hàm thành viên add_rewrite_tag () trên null


9

Sau khi đọc xong , tôi bắt đầu chuyển CPT của mình (cụ thể là "evento") sang một plugin mới (nó nằm trong chủ đề dựa trên Bones trước đó). Plugin mới về cơ bản là một thư mục Plugin WP Boilerplate mới , nơi tôi vừa đổi tên tất cả các "tên plugin" thành "dogmaweb", là tên của plugin mới của tôi. Xin lưu ý tôi là người mới bắt đầu khi nói về mã hóa WordPress.

Tôi đã sao chép ba tệp từ chủ đề vào thư mục plugin: tệp đầu tiên để đăng ký CPT (library / evento-post-type.php), tệp thứ hai cho một bài đăng (/single_evento-type.php) và thứ ba cho Lưu trữ CPT (/archive_evento-type.php). Tôi cũng đã giữ cấu trúc thư mục Bones cho các tệp đó trong plugin.

Sau đó, tôi đã đăng ký CPT vào lớp plugin của mình (bao gồm / class-dogmaweb.php) thêm phần sau vào hàm load_dependencies () của nó:

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

Tập tin này đăng ký CPT mới với một cuộc gọi đến:

add_action( 'init', 'evento_post_type');

và sau đó nó cũng đăng ký hai nguyên tắc phân loại:

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

Sau khi chuyển các tệp từ chủ đề sang plugin, toàn bộ trang web đã ngừng hoạt động. Tôi chỉ nhận được "500 lỗi máy chủ nội bộ" từ Apache. Nhật ký lỗi Apache hiển thị:

[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

Tuy nhiên, cùng một mã trong chủ đề Bones hoạt động chính xác. Tôi hiểu rằng WP đang cố gắng gọi add_rewrite_tag () trên một tham chiếu null, ví dụ $ this là null và điều đó khiến tôi nghi ngờ rằng tôi nên móc đăng ký phân loại bài đăng "evento" của mình ở một nơi khác. Tôi chỉ không biết ở đâu. Xin lưu ý rằng dòng 91 trong mã của tôi khớp với đăng ký phân loại đầu tiên, nhưng tôi khá chắc chắn điều tương tự cũng sẽ xảy ra cho lần thứ hai.


4
các register_taxonomycuộc gọi của bạn cũng bên trong evento_post_typechức năng? đăng ký phân loại nên được nối với init.
Milo

@Milo đó là vấn đề. Nếu bạn biến nó thành một câu trả lời tôi có thể chấp nhận nó, cảm ơn.
Lucio Crusca

Câu trả lời:


21

Mặc dù tôi không thích nhận tín dụng cho câu trả lời của người khác, tôi cũng không muốn để lại câu hỏi mà không có câu trả lời khi câu trả lời tồn tại và nó đã được đưa ra. Tôi hy vọng Milo sẽ không phiền nếu tôi sao chép câu trả lời từ bình luận của anh ấy.

Các register_taxonomycuộc gọi nên được nối đến init.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.