placeholderに「<」を入力するとget_field_name()が正常に動作しない
-
WP_Widgetクラスを継承してカスタムウィジェットを作っています。
public function form()の中で下記コードを書くとtextareaの内容が保存されません。(2回トライすると2回目にはきちんと保存されます。)
<label for="<?php echo $this->get_field_id( 'text' ); ?>">タグ:</label> <textarea class="widefat" rows="13" cols="20" id="<?php echo $this->get_field_id( 'text' ); ?>" name="<?php echo $this->get_field_name( 'text' ); ?>" placeholder="<div ..." ><?php echo ( $text ); ?></textarea>
デベロッパーコンソールからhtmlを見てみると下記のようになっていました。
<label for="widget-test_tag-2-text">タグ:</label> <textarea class="widefat" rows="13" cols="20" id="widget-test_tag-__i__-text" name="widget-test_tag[__i__][text]" placeholder="<div ..."></textarea>
$numberが正常に取得できていないようです。
placeholderのタグの「<」を取り除くと正常に動作しました。
これはバグでしょうか?
-
回答ありがとうございます。
& l t ;
を入れてみましたが結果は変わりませんでした。。。(なぜか変換されてしまったので半角スペースを入れていますm(_ _)m)状況を確かめるだけですが
placeholder="<div ..."
とplaceholder="<div ..."
の2つはダメで
placeholder="div ..."
なら大丈夫、でしょうか?まだ原因はわかりませんが、このコードだとどうでしょう?
<?php $phstr1 = '<div ...'; ?> <label for="<?php echo $this->get_field_id( 'text' ); ?>">タグ:</label> <textarea class="widefat" rows="13" cols="20" id="<?php echo $this->get_field_id( 'text' ); ?>" name="<?php echo $this->get_field_name( 'text' ); ?>" placeholder="<?php echo $phstr1; ?>" ><?php echo ( $text ); ?></textarea>
> $numberが正常に取得できていないようです。
とある $number が示されたコード内ないので、これはどのように取得されているのでしょうか。
もしかしたら、そのあたりのコードと関連性があるのかっもしれません。ご返信ありがとうございます。
$numberに付きましては/wp-includes/class-wp-widget.phpにあります。
このクラス内で$numberが正常に取得できないと”__i__”を返すようです。似たバグ ( @msthings さんと同じ内容か確かめていません) が本家のチケットに登録されていますが、ほかのバグと重複しているとの印がついており、終了になっています。
Input field with HTML tag as default value
https://core.trac.wordpress.org/ticket/30351チケットが生きている方は下記ですが、3年前から対応がストップしています。重要と思う人 (手をつける人) がいないようです。
Widget removes fields w/ default HTML on initial save in IE8 and 9
https://core.trac.wordpress.org/ticket/18446
- トピック「placeholderに「<」を入力するとget_field_name()が正常に動作しない」には新たに返信することはできません。