preprocess_comment フィルターでコメントをパースして、do_shortcode()
かまして、add_shortcode()
で登録したコールバックで渡されるアトリビュートがきちんとパースされてない。
試しに通常の記事にそのショートコード埋め込んだらきちんとパースされてる。
例えば [test tags="aaa, bbb, ccc" categoris="wp"]
とか渡すと、記事からコールバックされる場合、array( 'tags' => 'aaa, bbb, ccc', 'categories' => 'wp' ) とくるが、preproces_comment
フィルター内でやると、array( 'tags="aaa, bbb, ccc"' ), 'categories="wp"' ),
という感じでヌーメリック配列で渡される。
shortcode_parse_atts()
がうまく働いていない感じ。
Postscripts
対象のテキストをログで見たら、
[test tags=\"aaa,bbb\"]
みたいにクォーテーションマークにエスケープ処理されとる。pre_comment_content
フィルターにずらして少し遅らせても同じ。wp_insert_comment()
でwp_unslash()
してる。これ、先に同じ処理してもかまわないのかな。多分、大丈夫だとは思うが。