カスタム投稿タイプで投稿を選択するためのクエリは次のとおりです。フロントページにいる間、これはうまく働きます(スニペットはサイドバーに含まれています)。カテゴリページで実行されるとすぐにpost_type
属性は無視され、タイプ "post"の投稿が返されます。これは複数のループと関係があると思いますが、前後にwp_reset_postdata();
とwp_reset_query();
を呼び出すことも試みました。
$customPosts = new WP_Query( array(
'post_type' => 'mycustomtype',
'posts_per_page' => 12,
'orderby' => 'date',
'order' => 'DESC',
'post_status' => 'publish'
));
while ( $customPosts->have_posts() ) : $customPosts->the_post();
$thumbnailUrl = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), "thumbnail");
if ( !empty($thumbnailUrl)) {
/* echo result */
}
endwhile;
私はあなたがここでしていることの完全な文脈を正確にはわからない。解決策はいくつかあります。
最初に、あなたが期待通りに$post
にアクセスしていることを確認することです。言い換えれば、WordPressがページを構築するときに他のアクティビティの影響を受けていないことを確認してください。
$post
にフローのこの時点で期待しているオブジェクトが含まれているかどうかわかりません。そしてあなたのコードを見ることから、あなたがあなた自身の用法のためにあなたが$post
をどこに割り当てるかさえわかりません。
私はあなたがget_post_thumbnail_id($post->ID)
を呼んでいるのに気づきました。だから、私はあなたが$customPosts->$post->ID
の代わりに$post->ID
を使うことによってあなたの問題を解決するかもしれないと思います。
$post
を$customPost
に変更するという提案以外にも、私は上記のTidyの答えを解決策と考えています。
本当に、私の答えはもっと一般的です、それはそれです: あなたが変数名をクロスしないようにしてください 。
ある条件ではあなたのコードは動くかもしれませんが、他の条件では他の活動がその変数を変えるなら問題があるかもしれません。 $post
はWordPressの他の何かによって変更することができます 簡単 (明らかに)。
たとえばカテゴリページでは、投稿はWordPressによって生成され、それ自体がグローバルな$post
変数を利用します。私の経験から、私はあなたが抱えている問題であることすべてに賭けるでしょう。それから突然、ポストループのあるウィジェットがそれらのページで壊れます...
この状況でも将来でも試すことができる他のもの(ただし、それらはthe loop
で呼び出す必要があります。
ループ内のthe_post_thumbnail( array(100, 100) );
または$thumb = get_the_post_thumbnail( array(100, 100) );
を試す
代わりにget_posts()を使ってみましたか?
//#get access to post settings
global $post;
//#set parameters for extra loop
$args = array(
'post_type' => 'mycustomtype',
'posts_per_page' => 12,
'orderby' => 'date',
'order' => 'DESC',
'post_status' => 'publish'
);
//#get posts
$customPosts = get_posts($args);
//#loop through them
foreach($customPosts as $post)
{
//#set all the loop functions to use data from this post
setup_postdata($post);
//#do what you want with the post
}
これはあなたの問題を解決するでしょう、私がこれを置くとき私はそれが完全にうまくいったとき、私は同じ問題を抱えていました。
$args = array(
'post_type' => 'mycustomtype',
'posts_per_page' => 12,
'orderby' => 'date',
'order' => 'DESC',
'post_status' => 'publish',
'tag' => 'mycustomtag',
'cat' => 'mycustomcategory'
);
$the_query = new WP_Query( $args );
if($the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post();