this を読んだ後、私は _ cpt _ (つまり "evento")を新しいプラグインに移動し始めました(以前は Bones - ベースのテーマでした)。新しいプラグインは基本的に新しい WP Boilerplate Plugin フォルダーです。ここでは、すべての "plugin-name"の名前を "dogmaweb"に変更しました。これは私の新しいプラグインの名前です。 WordPressのコーディングに関しては私が初心者であることを忘れないでください。
テーマからプラグインフォルダに3つのファイルをコピーしました。1つはCPT登録用(library/evento-post-type.php)、もう1つは単一投稿用(/single_evento-type.php)と3つめのファイルです。 CPTアーカイブ(/archive_evento-type.php)私もプラグインでそれらのファイルのためにBonesディレクトリ構造を維持しました。
次に、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') ...
ファイルをテーマからプラグインに移動した後、サイト全体が機能しなくなりました。 Apacheから "500 Internal server error"が出るだけです。 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がnull参照に対してadd_rewrite_tag()を呼び出そうとしていることを私は理解しています。 $これはnullです、そしてそれは私が私がどこか他の場所で私の "evento"ポストタイプ分類法登録を引っ掛けるべきであると疑わせます。場所がわからないだけです。私のコードの91行目が最初の分類登録と一致することに注意してください、しかし私は同じことが2番目のものにも起こるだろうと確信しています。
私は他の誰かの答えを信用するのは好きではありませんが、答えが存在し、それがすでに与えられているときにも、答えなしで質問を残すのは好きではありません。 Milo 私が彼のコメントから答えをコピーしても構わないと思います。
register_taxonomy
呼び出しはinit
にフックする必要があります。