注目画像のみで投稿をクエリ


15

6件の投稿を照会しますが、注目の画像が添付されているもののみです。私はmeta_keyこのWP_Queryような方法を次のように使用しています:

$args = array(
    'post_type'  => 'post',
    'meta_key' => '_thumbnail_id',
    'post_count' => 6 );
$query = new WP_Query($args);

に続く

<?php while($query->have_posts()) : $query->the_post(); ?>
    <h2><?php the_title(); ?></h2>
    <?php the_post_thumbnail('thumbnail'); ?>
<?php endwhile; ?>

これはうまくいかないようです。クエリは、6を超える投稿と、注目の画像を持たない投稿も返します。ここで間違っていることはありますか?

@チップ:var_dump($query);大きな結果が得られるので、ペーストビンに投稿しました


2
コードスニペットは期待どおりに機能しました。エラーはコードの別の部分にあるのかもしれません。
Ralf912

何から得var_dump( $query )ますか?
チップベネット

私が考えた余分なこととして-投稿は、wordpressエクスポーター/インポーターを使用して、ライブサイトからローカルサーバーにインポートされました。元の投稿にはすべて、インポートプロセスで明らかに失われた画像が含まれていました。注目の画像は削除されましたが、メタキーがまだ残っているため、クエリが混乱しているということですか
ハリーグ

インポートを実行したときに、すべての添付ファイル/メディアをダウンロードして添付するチェックボックスをオンにしましたか?そうしないと、注目の画像は機能しません。投稿には注目の画像がありますが、存在しない添付ファイルを参照しているため、表示されません
トムJノウェル

はい、インポート時にチェックボックスをオンにしました。
ハリーグ

回答:


3

インポーターを実行する場合、すべてのメディア/添付ファイルをダウンロードしてインポートするには、チェックボックスをオンにする必要があります。

そうしないと、投稿には引き続き注目の画像セットがありますが、それらが参照する添付ファイルは無効になり、呼び出しthe_post_thumbnailを試みると失敗します。コードを使用すると、投稿タイトルだけが表示され、サムネイルは表示されません。これにより、注目の画像がない投稿が取り込まれているように見えます。これはそうではありません。注目の画像があり、インポート時に間違えたため利用できません。

投稿を削除し、正しい設定を使用して再インポートします。

また、ポイントを実証するために、実際に投稿をチェックすることを試みず、常に次のようにチェックします。

if ( $query->have_posts() ) { // you never checked to see if no posts were found
    while($query->have_posts()) { // alt style syntax doesn't work with most IDEs
        $query->the_post(); // individual statement should be on individual line
        ?><h2><?php the_title(); ?></h2><?php // you only need open/close tags here, not every line, save yourself some time typing
        if ( has_post_thumbnail() ) { // only print out the thumbnail if it actually has one
            echo '<p>post says it has a featured image</p>'; // double checking
            the_post_thumbnail('thumbnail');
        } else {
            echo '<p>this post does not have a featured image</p>';
        }
    }
} else {
    echo '<p>no posts found</p>';
}

チェックボックスをオンにしていない場合、注目の画像があることを示す画像が表示されますが、画像は表示されません


1
これが、私が提供した答えが期待どおりに機能しない理由だと思います。WordPressの自殺プラグインはすべてのコンテンツを削除するための、かなり便利です。
helgatheviking

私は間違いなくそのボックスをチェックしました。しかし私の経験では、それは私にとってはうまくいきませんでした。すべての画像は外部サイトにリンクされました。Import External Images(wordpress.org/extend/plugins/import-external-images)プラグインを使用して、画像をローカルに保存して添付しました。
ハリーグ

私は同じ考えを持っていました、私は間違いなくボックスをチェックしました、なぜそれがまだ動作しないのですか?私はクライアントからそれを受け取ったので、間違えやすいので、投稿を削除し、再インポートして、チェックされていることを確認してください。それでも機能しない場合は、除外できます。それ以外の場合、ニール・デグラス・タイソンが、人間の記憶がどれほど哀れなほど弱いかについて話します。今、2番目のチェックボックスのチェックを外すように頼むことができます。おそらくそれを見たことを覚えているでしょう(しかし、1つはありません)
トムJノウェル

そしてその間に、ラップthe_post_thumbnailとのhas_thumbnailコールとは、あなたは間違いなく明確にポストがおすすめイメージがないことを知っているので、他のケースを追加
トム・J Nowell

また、サーバーがリモートサーバーにアクセスできることを確認してください。サーバーがリモートリクエストを取得できない場合、インポートできません。すでに取得したメディアの添付ファイルを削除する必要がある場合があります
トムJノウェル

23

ワードプレス3.5の時点で、メタクエリパラメータのサポートEXISTSNOT EXISTS比較演算子として。これらを使用している場合、メタクエリのvalue一部を省略できます。クエリに対して次の引数を試してください。

$args = array(
   'post_type'  => 'post',
   'posts_per_page' => 6,
    'meta_query' => array(
        array(
         'key' => '_thumbnail_id',
         'compare' => 'EXISTS'
        ),
    )
);

提案をありがとう。6つの投稿を取得しましたが、サムネイルのない投稿を取得します。
ハリーグ

私はこれをテストし、それは私のために働いた。しかし、メタセットを持つエンティティが返されることに気付きましたが、何らかの理由で添付ファイルIDが正しくありません。投稿に注目の画像が設定されていることを再確認してください。そうでなければ、私は他に何が問題なのか分かりません。
ヘルガサビキング

harryg、v3.5以降を使用していることを確認できますか?
トムJノウェル

はい、最新バージョンのWordPressを実行しています。ローカルDevサーバーにネットワーク(マルチサイト)セットアップとして新たにインストールされています。
ハリーグ

2
追加情報:未解決のバグがあります。tracチケット23268を参照してください。これを使用する場合、値を使用する必要がありますNOT EXISTS
ニコライ14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.