0

ユーザー用にusermetaを設定して、お気に入りの投稿をプロフィールに保存しています。私はこのusemetaを取得しています(これは投稿IDを保持します)。取得すると、1次元配列になります。彼らのお気に入りの投稿のリストを表示したいと思います。私はこれを試しました:

$favorites //array of favorites, that has come from the databese 

$query = new WP_Query( array( 'post__in' => array( 2, 5, 12, 14, 20 ) ) );

投稿IDをハードコーディングすれば問題なく動作しますが、配列であるため、そのような配列を渡すことはできないため、何も返されません。

$query = new WP_Query( array( 'post__in' => $favorites) );

それはそれを受け入れません、私はまたそのように配列を文字列に内破しようとしました:

$fav_list = implode("," , $favorites);

これを取得します。これは、引用符なしで文字列「124,126,125,130,132,140,​​142」として必要なものです。次に、それをそのように使用します。

$query = new WP_Query( array( 'post__in' => array($fav_list) ) );

しかし、やはり機能せず、何も返されません。お気に入りリストはusermetaから取得されており、ユーザーはそれを変更できるため、リストをハードコーディングすることはできません。

誰か助けてもらえますか?WP_Queryでも可能ですか。なぜそれが文字列をとっていないのか、私が間違っているのかわからない。Wordpressのドキュメントを読み直しましたが、解決策が見つかりませんでした。

前もって感謝します。

4

1 に答える 1

1

配列は、配列としてデータベースに格納されません。それらはシリアル化されます。データベースからアレイをプルするときは、unserialize()それに必要です。

http://php.net/manual/en/function.unserialize.php

データベースから出た直後にvar_dump($favorites)、それが奇妙に見える文字列であり、配列ではないことに気付くでしょう。var_dump(unserialize($favorites))元の配列が表示されます。

于 2013-02-22T11:23:47.817 に答える