なぜこれがうまくいかないのか、私は本当に迷います。
カスタム投稿タイプ+分類法に関するクエリを表示するためにショートコードを使用しています。これはそのセグメントです。
// - arguments -
$args = array(
'post_type' => 'customposttypename',
'taxonomyname' => 'alpha',
'post_status' => 'publish',
);
// - query -
$my_query = null;
$my_query = new WP_query($args);
while ($my_query->have_posts()) : $my_query->the_post();
// - variables -
$custom = get_post_custom($post->ID);
...そして変数は動き続けます。ただし、ループを実行すると、デフォルトの投稿コンテンツ(タイトル、コンテンツなど)はすべて表示されますが、カスタム投稿タイプのコンテンツは表示されず、上の最後の行(145行目)で停止します。すなわち$custom = get_post_custom($post->ID);
は私に次のエラーを出しています..
通知:未定義の変数:145行目のC:\ xampplite ...\functions.phpに投稿してください
Notice:行145のC:\ xampplite ...\functions.phpで、オブジェクト以外のプロパティを取得しようとしています
それからここにそれは私にタイトル、内容、等を普通に示しています(ただカスタムポストタイプの内容はありません)
「私は間違っていますか?
ありがとうございました!
Notice:非オブジェクトのプロパティを取得しようとしています
$post
はあなたの関数の中にスコープがないことを暗示するでしょう。ここでの簡単な解決策の1つは、$post
をグローバル化して範囲を確保し、効果的にエラーを修正することです。
ただし、クエリを作成するか、ループを実行してthe_post
メソッドを呼び出すと、WordPress テンプレートタグ にアクセスできます。
そうではなく、グローバルステートメントを使用して、get_the_ID()
を呼び出すことができます。これには、もちろん、指定された投稿のID(つまり、ループのその繰り返しに対する現在の投稿)を含める必要があります。
読むようにあなたの問題の行を更新してください..
$custom = get_post_custom( get_the_ID() );
そしてそれは問題を解決するでしょう、もちろん関数の中で$post
スコープを与えることはうまくいくであろうことに注意すること、それはただ詩的に見えないでしょう!..;)
質問者へのちょっとした質問、あなたがget_post_custom
を呼び出すときに何を探していますか、あなたはいくつかの特定のメタキーをチェックしていますか、あるいはあなたが見つけたすべてのメタアイテムをループしますか?そこに改善の余地があるかもしれません(興味があるなら)。