2012-01-14 20 views
0

私はワードプレスを使用して、私は私が私のカスタムフィールドから別のタイトルと説明を見ることがすべてのページにそれを達成したい:PHPのforeachループ

1ページ(idがあります1)タイル、説明

2ページ(ID 2)タイトル、説明

など。

私は異なるとコードのこの部分を試みましたバリエーション(今はidだけを表示しています)が、すべてのタイトルと説明をすべてのページに配置するだけです。チュートリアルのかのヒントは非常に参考になる

$titles = array(); 
$result = mysql_query("SELECT * FROM wp_postmeta WHERE meta_key='_aioseop_title' OR meta_key='_aioseop_description'"); 

while($row = mysql_fetch_array($result)) 
{ 
    $titles[] = $row['meta_value']; 
    $ids[] = $row['post_id']; 
} 
?> 
<?php 
if ($post_id = the_id()) 
{ 
    foreach ($titles as $meta_key=>$meta_value) 
    { 
     print $post_id; 
     print '<div class="white">' . $meta_value . '</div>'; 
     print '<div class="green">' . $meta_value . '</div>'; 
    }; 
} 
?> 

任意のアイデアやリンク。

+0

$ post_idはどこから来たのですか? wpのエキスパートではありませんが、あなたはそのIDをどこかのSQLに張っておくべきだと思います。あなたのSQLはあまりにも多くの記事を取得しています – Nicolas78

+0

あなたが見ると、post_idは、私が表示しようとしている最後の行meta_keyとmeta_valueに付随するデータベースの行です。ですから、私はpost_idと一緒に来るmeta_valuesだけを表示するために、私が現在いるページのidとpost_idを一致させる必要があります。 Patrick de Vriesメソッドが働いて、私に必要なものが表示されますが、私は$ meta_data ['aioseop_title']を表示するための答えをまだ待っています。私はどういうわけかそれをすることはできません。 –

答えて

0

にそれを制限します。それは、フィールドpost_idget_the_ID()に等しいことを確認することによって行うことができます。

$result = mysql_query("SELECT * FROM wp_postmeta WHERE (meta_key='_aioseop_title' OR meta_key='_aioseop_description') AND `post_id` = '".get_the_ID()."';"); 

次にあなたが変数に結果を読み取ることができます。

while ($row = mysql_fetch_array($result)) { 
    $meta_data[$row["meta_key"]] = $row["meta_value"]; 
} 

$meta_data["_aioseop_title"]タイトルが含まれている必要があり、かつ$meta_data["_aioseop_description"]は記述が含まれている必要があります。

+0

大丈夫、トンの意味を作る。私はまだforeachループを書くか、変数として$ meta_data ["_ aioseop_title"]と$ meta_data ["_ aioseop_description"]を使用することができます。

+0

これは、データベースに送信したクエリのすべての結果を読み込むので、ループが必要です。ループがなければ、 '$ meta_data [" _ aioseop_title "]'や '$ meta_data [" _ aioseop_description "]'はありません。 編集:私は今編集したwhileステートメントの中にもエラーがありました。 – Patrickdev

+0

はい、whileステートメントを編集すると、最終的にvar_dump($ meta_data)の結果が得られました。これは、私たちが必要とするものです - そのページのタイトルと説明。私は今、適切なループを作成しようとします –

0

あなたのクエリは、すべてのポストメタデータを取得する - あなたは最初だけで、特定の記事のタイトルと説明をフェッチする必要がありpost_idの= the_id()

+0

すべてのコードを書けますか?私はちょっとこの事で新しいです –

0

パトリックデーヴの助けを借りて私はそれをすることができました:)どういうわけか、foreachループを書いたとき、タイトルと説明がメタデータデータの各要素に対して2回表示されます。誰もがそれを必要とする場合、その配列の要素は、それはそれは

:)をすべきであるとして働き始めました。ここのコードです:

<?php   

            $result = mysql_query("SELECT * FROM wp_postmeta WHERE (meta_key='_aioseop_title' OR meta_key='_aioseop_description') AND `post_id` = '".get_the_ID()."' ORDER BY meta_id DESC;"); 

            while ($row = mysql_fetch_array($result)) 
             { 
              $meta_data[$row["meta_key"]] = $row["meta_value"]; 
             } 
              print '<div class="white">' . $meta_data["_aioseop_title"] . '</div>'; 
              print '<div class="green">' . $meta_data["_aioseop_description"] . '</div>'; 
           ?> 

おかげで再び、Patrickdev。