人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

WordPressのquery_postsについて質問させてください。
初心者なのですが、ハマってしまいましてズバリご回答いただいた方に
1000P差し上げます(参考になればその他の方にも高ポイント)。

プログラムの一部に下記があり、カテゴリ?の1と2と6を取得しているのですが、
<?php if ( have_posts() ) : query_posts('cat=1,2,6'); ?>

上記の、1,2,6の部分をカスタムフィ?ルドから入力したいのです。
(プラグインの「Advanced custom field」を使用予定です)
つまり、<?php if ( have_posts() ) : query_posts('cat=<?php echo post_custom("Category")?>'); ?>としたいのです。しかし、これは当然動きません。<php ?>の中に更に<php ?>を入れられないですし、そもそもquery_postsにカスタムフィ?ルドの値を表示させることもできません。
代案を探しているのですが見つからず困っております。
「get_post()」か「WP_Query()」を使えば良いらしいということはわかっているのですが、うまく置き換えることができません。
うまくいく方法を教えていただけませんでしょうか。

ちなみに本体のプログラムはグ?グルマップを表示するもので、1,2,6のカテゴリ?に属する店舗情報の住所(lat,lon)を取得し、マ?カ?を一覧表示させています。

●質問者: mocchi
●カテゴリ:インターネット ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● かずきち。
●0ポイント

エラーコードは出せませんか?


mocchiさんのコメント
エラ?コ?ドは出ず、グ?グルマップ上のマ?カ?が表示されなかったり、マップ自体が表示されなかったりします(そのどちらかになります)。

かずきち。さんのコメント
ok わかりました。 貴方はphpにphpを埋め込みたいみたいなソースを書きたいんですね? 文字のエスケープキーを使って下さい。 <?php if ( have_posts() ) : query_posts('cat=<?php echo post_custom("Category")?>' って記述したら、1回目の<?php>という文字列と2回目の</php?という文字列の区別がつかないですね? 言ってる意味わかります? phpのエスケープシーケンスを使って下さい!! たぶん解決します。 参照→ http://www.phpbook.jp/tutorial/string/index4.html phpプログラムにphpプログラムを埋め込む時はエスケープキーを使って見て下さい。

かずきち。さんのコメント
ごめんなさい。はてなでエスケープシーケンスの記述ができない… プログラムにプログラムを埋め込むにはちょっと工夫が入ります。 参照のURLを参照してください。

かずきち。さんのコメント
「エスケープシーケンス」でぐぐってください!! ここでもエスケープされるのですが、それがポイント。

かずきち。さんのコメント
<php ?>の中に更に<php ?>を入れられないですし、っていう疑問が解決しますw

mocchiさんのコメント
?? ちょっとよくわかりません。 たぶん、私のレベルが低すぎるんだと思います。 ごめんなさい。

2 ● gizmo5
●1000ポイント ベストアンサー

ソースの全体が分からないと何とも言えませんが、カスタムフィールドを取得する対象の投稿が $post という変数に入っていた場合にはこのような感じになると思います。
クエリするカテゴリが query_categories というカスタムフィールドに入っているとします。

<?php
$categories = get_post_meta( $post->ID, 'query_categories', true);
if ( have_posts() ) : query_posts('cat=' . $categories);
?>

mocchiさんのコメント
思っていたとおりの動作になりました! 完璧な回答です。本当にありがとうございました! 質問はこれにて終了させていただきます。 あと、できれば勉強のため、オマケで下記について教えていただけませんでしょうか。 対象のカテゴリ?名をechoなどで画面表示させたい場合、どういったソ?スになるでしょうか? 対象となる投稿につけたカテゴリ?の名前を表示したいのです。

gizmo5さんのコメント
カスタムフィールドから取得したカテゴリID を、カンマで分解して get_category でデータを取得するような感じになると思います。 $categories にはカスタムフィールドから取得したカテゴリの指定が入っているとします。 >|| $category_array = explode(',', $categories); foreach ($category_array as $c_id){ $c = get_category($c_id); echo $c->cat_name; } ||<

mocchiさんのコメント
なるほど、参考になりました! ありがとうございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ