いつもお世話になっております。Wordpressで$_POST
時に勝手に文字列が付与する仕様と解決策についてお尋ねします。
宜しくお願い致します。
###実現したいこと
ユーザーカスタムフィールドの更新において、$_POST
値から勝手に付与される文字をなくしたいです。
###発生している問題
後述のソースコードで、「プロフィールを更新」をクリックすると、このように勝手に文字が追加されてしまいます。
これを回避してずっとvalue
のままでいてほしいです。
【1】value
を入力して更新
【2】"value"
が入ってる。そのまま更新する。
【3】"\"value\""
が入ってる。そのまま更新する。
【4】"\"\"value\"\""
が入ってる。
以下に図も添付します。
###該当のソースコード
ユーザーカスタムフィールド更新のためのprofile_update()
です。functions.phpに書いています。
add_action( 'profile_update', 'save_profile_fields' ); function save_profile_fields( $user_id ) { $cf_key_arr = ['user_meta_test']; foreach( $cf_key_arr as $cf_key ){ update_user_meta( $user_id, $cf_key, $_POST[$cf_key] ); } }
###試したこと
Wordpressでは基本的に$_POST
に勝手に文字がつくとのことで、下記2通りを試しましたが、まったく効果なく上の【1】から【4】のままでした…。
foreach( $cf_key_arr as $cf_key ){ update_user_meta( $user_id, $cf_key, stripslashes($_POST[$cf_key]) ); }
foreach( $cf_key_arr as $cf_key ){ $_POST = array_map('stripslashes_deep', $_POST); update_user_meta( $user_id, $cf_key, $_POST[$cf_key] ); }
###補足
上図ピンク枠の入力ボックスを表示させるコードは次の通りです。
add_action( 'show_user_profile', 'my_profile_fields', 10, 1 ); add_action( 'edit_user_profile', 'my_profile_fields', 10, 1 ); function my_profile_fields( $user ) { $user_id = $user->ID; $cf_key = 'tset'; $cf_data = get_user_meta( $user_id, $cf_key, true ); echo '<h3>テスト</h3>'; echo '<div>'; echo '<textarea name="'.$cf_key.'">'.json_encode($cf_data, JSON_UNESCAPED_UNICODE).'</textarea>'; echo '</div>'; }
回答1件
あなたの回答
tips
プレビュー