WP・xmlrpcで「指定されたタクソノミーのうち・・・」

2017/02/28

WordPressのxmlrpc投稿(?)でカテゴリを含めて「wp.newPost」したときに下記のようなエラーがでてくる。

指定されたタクソノミーのうち、この投稿タイプに対応していないものがあります。

実際には投稿は成功している。その後「wp.editPost」してもエラーは出てこない。

投稿に成功しているとは言え、エラーがでてくるのは色々と面倒なので調べてみた。

原因?

「指定されたタクソノミーのうち、この投稿タイプに対応していないものがあります。」というエラーは「wp-includes/class-wp-xmlrpc-server.php」の中にいる下記が原因。

if ( isset( $post_data[‘terms_names’] ) && is_array( $post_data[‘terms_names’] ) ) {
  $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」となっていた。

投稿時のデータ

新規投稿時の投稿データは下記のような感じ

Array (
  [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。

新着(ニュース関連以外)

2017-11-09
PCでプッシュ通知ってのをしたい。
2017-11-06
PHPのバージョンを上げたらwikiが壊れたっぽい。
2017-08-03
formのinputでmaxlengthを使うとFirefoxでバグってた。他のブラウザでも気づかずにバグってたかもしれない。
2017-07-19
折れ線グラフをもう少しゆるやかに・・・というか何というか・・・調べていくと「移動平均」っていう言葉にたどり着いた
2017-07-10
FuelPHPの1.8をダウンロードして使っていたらセッションが使えないということに気付いた。