WP・xmlrpcで「指定されたタクソノミーのうち・・・」
WordPressのxmlrpc投稿(?)でカテゴリを含めて「wp.newPost」したときに下記のようなエラーがでてくる。
実際には投稿は成功している。その後「wp.editPost」してもエラーは出てこない。
投稿に成功しているとは言え、エラーがでてくるのは色々と面倒なので調べてみた。
原因?
「指定されたタクソノミーのうち、この投稿タイプに対応していないものがあります。」というエラーは「wp-includes/class-wp-xmlrpc-server.php」の中にいる下記が原因。
$taxonomies = array_keys( $post_data[‘terms_names’] );
foreach ( $taxonomies as $taxonomy ) {
if ( ! array_key_exists( $taxonomy , $post_type_taxonomies ) )
return new IXR_Error( 401, __( ‘Sorry, one of the given taxonomies is not supported by the post type.’ ) );
※上記は「terms_names」だけど「terms」も同じっぽい。
「new IXR_Error()」の中にいる「Sorry, one of the given taxonomies is not supported by the post type.」が日本語にされて「指定されたタクソノミーのうち、この投稿タイプに対応していないものがあります。」と出力されているみたい。
処理内容
内容的には「$post_type_taxonomiesの中に$taxonomyって存在する?」っていう条件でこけている。
で、「$taxonomy」はコッチが送ったカテゴリ情報とか、「$post_type_taxonomies」ってヤツは記事に紐づくカテゴリ情報とかっぽい。
※多分、タグも同じだと思う
エラー時は「$taxonomy」に「category」が入っていて「$post_type_taxonomies」は「false」となっていた。
投稿時のデータ
新規投稿時の投稿データは下記のような感じ
[post_content] => 投稿本文
[post_title] => 投稿タイトル
[terms_names] => Array
(
[category] => Array
(
[0] => カテゴリ名
)
)
)
※post_authorとかはココでは省略
結論?
対策というか・・・推測になるけど・・・
「カテゴリを含めた新規投稿」ってのはエラーが出るバグじゃないかな?
「カテゴリを含めない新規投稿」から「カテゴリを含めた更新」にするのが正解のような気がする。
・・・これってWP側の問題なんじゃないの?
ひとまず調査終了(2017/02/28 00:42)。
結論:再調査(2017/02/28 10:09)
「[post_type] => revision」のときがダメっぽい。
「[post_type] => post」のときがOK。