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)を取得し、マ-カ-を一覧表示させています。

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2014/10/08 05:52:58
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:gizmo5 No.2

回答回数504ベストアンサー獲得回数141

ポイント1000pt

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

<?php
	$categories = get_post_meta( $post->ID, 'query_categories', true);
	if ( have_posts() ) : query_posts('cat=' . $categories);
?>
他1件のコメントを見る
id:gizmo5

カスタムフィールドから取得したカテゴリID を、カンマで分解して get_category でデータを取得するような感じになると思います。
$categories にはカスタムフィールドから取得したカテゴリの指定が入っているとします。

$category_array = explode(',', $categories);
foreach ($category_array as $c_id){
	$c = get_category($c_id);
	echo $c->cat_name;
}
2014/10/08 10:05:56
id:ykhpno1

なるほど、参考になりました!
ありがとうございました。

2014/10/09 03:15:42

その他の回答1件)

id:kazukichi_0914 No.1

回答回数126ベストアンサー獲得回数8

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

他4件のコメントを見る
id:kazukichi_0914

<php ?>の中に更に<php ?>を入れられないですし、っていう疑問が解決しますw

2014/10/07 22:08:12
id:ykhpno1

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

2014/10/08 05:55:18
id:gizmo5 No.2

回答回数504ベストアンサー獲得回数141ここでベストアンサー

ポイント1000pt

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

<?php
	$categories = get_post_meta( $post->ID, 'query_categories', true);
	if ( have_posts() ) : query_posts('cat=' . $categories);
?>
他1件のコメントを見る
id:gizmo5

カスタムフィールドから取得したカテゴリID を、カンマで分解して get_category でデータを取得するような感じになると思います。
$categories にはカスタムフィールドから取得したカテゴリの指定が入っているとします。

$category_array = explode(',', $categories);
foreach ($category_array as $c_id){
	$c = get_category($c_id);
	echo $c->cat_name;
}
2014/10/08 10:05:56
id:ykhpno1

なるほど、参考になりました!
ありがとうございました。

2014/10/09 03:15:42

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません