WordPress XMLRPC投稿でカテゴリー作成

wordpress
この記事は約2分で読めます。

WordPressでXMLRPC投稿時にカテゴリーを自動で設定したいという相談がありちょっと調べてみた。

WordPressでカテゴリー作成するには,通常管理画面から行なうことになるが,php内からももちろん作成が可能である。以下のAPIがwp-includes/taxonomy.phpに用意されているので,これを使用すればよいだろう。

なお,admin内であれば以下のショートカットAPIを使うとよりシンプルかと思われる。このAPIは,wp-admin/includes/taxonomy.phpで定義されている。

でここから,階層構造をもつカテゴリーを一度に複数指定したい場合。

これには,ちょっとはまってしまった。まず,カテゴリー作成が行なわれた場合,term関連のテーブルが更新され,clear_term_cache関数により各種wpキャッシュが削除され,さらにcategory_childrenという子カテゴリーのリストを保存するデータがwp_optionsテーブルから削除される。しかし,clear_term_cache関数では,static指定でtaxonomy(ここでは,category)のキャッシュをクリアしたどうかのフラグが管理されており,category_childrenの削除は最初の一度しか有効にならない。よって,階層構造をもつカテゴリーを一度に複数作成した場合,最初に作成した時のみcategory_childrenが削除され,残りの作成したカテゴリーに適用されない。category_childrenオプションは,管理画面のカテゴリー画面で使用されている値のため,結局表示されるカテゴリーリストとテーブルデータとの間に差異が生じ,カテゴリー階層が正しく表示されないことになる。

結局,以下のようにキャッシュを強制的に削除することで対応した。

このやり方は正攻法でないかもしれないし,そもそも一度に階層構造をもつカテゴリー指定を行なうこと自体が推奨されないのかもしれない。

 

コメント

タイトルとURLをコピーしました