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

この記事は【2013年2月11日】と作成から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オプションは,管理画面のカテゴリー画面で使用されている値のため,結局表示されるカテゴリーリストとテーブルデータとの間に差異が生じ,カテゴリー階層が正しく表示されないことになる。

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

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

 

カテゴリー: wordpress | タグ: | 投稿日: | 投稿者:

byebyehaikikyou について

産業機械系エンジニア→アフィリエイトWeb広告系のアプリ開発→PostgreSQL周辺機能の開発→企画開発(現在ここ) 地方でITエンジニアをしています。Webやスマフォアプリ、Hadoopなどのビッグデータに関するシステムに関わり、現在は企画開発などの業務。 日々のインプットを発信してます。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください