2

user-edit.phpファイルを使用してwordpressの管理エリアにカスタムテキストエリアを追加しようとしています

正しい場所にtextareaを追加し、データベースのwp_usermetaに新しいエントリを追加しようとしましたが、テキストボックスにエコーが成功しました。

このコードは機能します

<tr>
    <th><label for="user_ad">Ad Code</label></th>
    <td><textarea name="user_ad" id="user_ad" rows="5" cols="30"><?php echo esc_attr($profileuser->user_ad) ?></textarea>
    </td>   
</tr>

ただし...フォームが送信されたときに、この新しいテキストエリアのwp_usermetaを更新するのに問題があります。

使ってみました、

update_user_meta( $user_id, 'user_ad', $_POST['user_ad'] );

しかし、それは機能しません。現在のmeta_valueを空白で上書きするため、近いことがわかります。何らかの理由で$_POST変数が渡されておらず、その理由がわかりません。私はワードプレスの経験がないので、何かを見落としているかもしれません。

ありがとう

4

3 に答える 3

3

このブログ投稿では、あなたが求めているものを達成するための1つの方法について詳しく説明しています...

http://justintadlock.com/archives/2009/09/10/adding-and-using-custom-user-profile-fields

私はあなたの質問を誤解したかもしれませんが、user-edit.phpファイルを変更したようにひどく聞こえます。

あなたは本当にそのページを編集したくありません-それはWordPressコアの一部です。WordPressをアップグレードすると、行った変更はすべて上書きされます。

WordPressにはフックが用意されているため、ファイルを編集する必要はありません。確かに、この場合、フックは特に役に立ちませんが、それでもそれを行う必要があります。これが、上記のリンク先のブログ投稿がそれを処理する方法です。

于 2012-05-16T21:35:08.113 に答える
0

で空の値を取得していると思われます:

代わりにこのコードを試してください:

if($_POST['user_ad'] != '') {
  $userAd = $_POST['user_ad'];
  update_user_meta( $user_id, 'user_ad', $userAd );
}

次に、この空のフィールドがDBで上書きされていないかどうかを確認します。

于 2012-05-16T21:33:55.363 に答える
0

これはあなたの質問に対する直接の答えではありませんが、コアファイルをハッキングしようとしていることを意味しています...もしそうなら、あなたは間違いなくプラグインが必要です。

私は最近これを見つけました、そしてそれはあらゆる種類のカスタムユーザーメタを追加するのに素晴らしいです:
CimyUserExtraFields

コアファイルを実際に変更した場合は、この手順に従ってWordPressファイルを元の状態に復元してください。 http://codex.wordpress.org/Updating_WordPress#Manual_Update

そうでなければ、 wordpress.stackexchangeにこれらの問題について多くの答えがあります。

于 2012-05-17T00:00:43.573 に答える