質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

2478閲覧

「user_meta」に配列を入れ、後に「update_user_meta」で操作したい

narutonaruti

総合スコア15

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/01/31 03:05

###質問の概要
WordPressについて、2点ございます。
user_metaについて配列を使う方法と、それに併せてupdate_user_metaの使い方もわからず質問させて頂きました。ご覧頂けますと幸いです。

###1.user_metaの使い方
user_metaの「user_notification」に次のような配列を入力しようと考えています。(ユーザーへの通知一覧です。)

array( array( 'action'=>'follow', 'time'=>'13:00', 'actor'=>'1', 'actee'=>'4', 'read'=>'yet', ), array( 'action'=>'like', 'time'=>'14:00', 'actor'=>'2', 'actee'=>'4', 'read'=>'done', ), );

しかし上の配列を管理画面から入力し、次のようにvar_dumpすると、出力される配列は1つにまとまって文字列として出力されてしまうのです。

$user_notification = get_user_meta( get_current_user_id(), 'user_notification' ); var_dump($user_notification);

↓1つにまとまって文字列として出力されてしまう

array(1) { [0]=> string(188) "array( array( 'action'=>'follow', 'time'=>'13:00', 'actor'=>'3', 'actee'=>'1', 'read'=>'yet', ), array( 'action'=>'like', 'time'=>'14:00', 'actor'=>'4', 'actee'=>'1', 'read'=>'done', ), ); " }

これを回避したいのですが、適当な方法を教えて頂けませんでしょうか?

###2.update_user_metaの使い方
そして併せて生じる問題に、update_user_metaの使い方があります。

たとえば新しい配列$user_following_setを「user_notification」に追加したいときはどのように書けばよろしいでしょうか?
次のイメージですが、正しい書き方がわかりません。

$user_following_set = array( 'action'=>'follow', 'time'=>'15:00', 'actor'=>'5', 'actee'=>'1', 'read'=>'yet', ), update_user_meta( $user_id, "user_notification", $user_following_set );

以上2点になります。
お手数おかけし申し訳ございませんが、ご指導ご鞭撻のほど宜しくお願い申し上げます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

データの定義は文字型なので入出力するデータは文字列になります。

オブジェクト(配列)を文字列に変換して保存して、取り出した文字列を元に戻すことが可能です。
これをシリアライズといいます。

PHPはserialize、unserializeという関数が用意されているので詳細はご自身で調べてみてください。
他にjsonフォーマットや独自フォーマットを作って同様の処理をすることも可能です。

投稿2019/01/31 04:08

tabuu

総合スコア2449

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

narutonaruti

2019/01/31 06:21

シリアライズですか。覚えておきます。ありがとうございます。 ところで、このようにユーザーへの通知をuser_metaに入れておくことって、何かおかしなことはないでしょうか? 一般的に通知をどう処理するのかわからず、ひとまずuser_metaに入れておこうと思ったのですが、少し不安です。
tabuu

2019/01/31 23:28

本題からそれることと、プログラミングではなく設計のことなので、ここでは回答し辛いですが、 user_metaに入れるとしても1通知を1レコードにすべきかと思います。 (仮に1ユーザに10000通知登録されたときにWordPressが重くなるのか等の検証は必要ですが。)
narutonaruti

2019/02/01 07:56

勉強になります。どうもありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問