2017-06-11 20 views
0

タイトルで表示される画像の添付ファイルを取得することができません。&リストのWordpressページを抜粋しています。私は新しいWP_Queryを使用して、特定のカテゴリから3つの投稿で構成されるリストを生成しています。ループ内では、各投稿の最初の画像を取得しようとしています。画像IDを 'get_children'配列で取得しています(投稿には特典画像がないので、the_post_thumbnailは使用できません)。 console.logを使って、私は少なくともリストの最初の項目の画像URLを取得していますが、他の項目は取得していないことがわかります。そして私が得ているものでも、wp_get_attachment_thumb_file()を使って表示することはできません。ここで私がこれまで持っているコードです:あなたが見てしたい場合はタイトルと画像添付のサムネイルを表示する

<div class="inner-left"> 
<ul class="blog-posts-ul"> 
<?php 
global $wp_query; 
$wp_query = new WP_Query(array('order' => 'DESC', 'posts_per_page' => 3, 'cat' => '21,23,689,741,1589')); 
    if (have_posts()) : while (have_posts()) : the_post(); ?> 
    <li> 
     <?php $attachment = get_children(array('post_parent' => get_the_ID(), 'post_type' => 'attachment', 'post_mime_type' => 'image')); 
      if ($attachment) { 
       $attachment = current($attachment); 
       $image_url = wp_get_attachment_thumb_url($attachment->ID); 
       $attachment_id = attachment_url_to_postid($image_url); 
       echo '<script>console.log("thumb: "' . $image_url . ')</script>'; 
      }; ?> 
     <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><?php the_excerpt(); ?> 
     <?php wp_get_attachment_thumb_file($attachment->ID); ?> 
    </li> 
    <?php endwhile; endif; ?>   
</ul> 
<?php // Reset Query 
wp_reset_query(); ?> 
</div><!-- inner-left --> 

テストサイトはhttp://testsite.humortimes.com/です。下にスクロールすると、「Latest Humor Times Faux News Headlines」セクションの下に3つの四角形で表示されます。今はフォーマットがうまくいきません。私は2つの列を持つことを計画しています。

ご協力いただければ幸いです。ありがとうございました。

+0

私は有効な添付ファイルIDを取得しています... '$ attachment_id = $ attachments-> ID;' ... '$ image_url = 'var_dump($ image_url);' ...で示されているように、wp_get_attachment_thumb_url($ attachments-> ID);何故ですか? '$ image_thumb = wp_get_attachment_thumb_file($ attachment_id); var_dump($ image_thumb); ' – jamminjames

答えて

0

コンソールログの使用をやめ、var_dump($ image_url)を使い始める。それはあなたがその要素に直接持っているものを印刷します。

投稿サムネイルを使用できないのはなぜですか? 、私はその前に1を試してみました宣誓ていたかもしれない

wp_get_attachment_image($attachment_id, 'thumbnail') 

+0

私は、あなたが「おすすめ画像」が選択されていない限り、それはうまくいかないと思っています。また、このコードでif文を試しました(投稿サムネイルがある場合はそれを使用し、それ以外の場合はそれを使用します)。また、機能イメージがないため、何も生成しませんでした。私はたぶん一般的な目的のために、それを戻すべきでしょう。 – jamminjames

0

は、最後に画像添付(the_post_thumbnailを使用して機能を備えた画像などは利用できませんでないもの)のサムネイルを返します何かを発見しましたしかし、とにかく、それは今働いている、hallelujah。

しかし、リストアイテム<li>ごとに同じ画像が使用されているという問題が残されました。 (ループはリストを取り囲んでおり、その周囲は<ul>です)。

Function Reference/get childrenで良い情報を見つけました。配列のキーを再作成すると、少なくともリストアイテムごとにサムネイルイメージを更新しようとしているようです。しかし、私は最初のものを超えてイメージを取得していません。だから、それはなぜ更新していないのですか?

完全なコードは、次のようになる:それは最初の後に連続する各項目に対して「NULL」を与えるように端で

<div class="inner-left"> 
<ul class="blog-posts-ul"> 
<?php 
global $ht_query; 
$ht_query = new WP_Query(array('order' => 'DESC', 'posts_per_page' => 3, 'cat' => '21,23,689,741,1589')); 
if (have_posts()) : while ($ht_query->have_posts()) : $ht_query->the_post(); 
if (has_post_thumbnail()) { 
    $image_attach = the_post_thumbnail(); 
    } else { 
    $args = array('post_parent' => $post->ID, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'numberposts' => 1, 'order'=> 'DESC'); 
    $attachments = get_children($args,ARRAY_A); 
    $rekeyed_array = array_values($attachments); 
    $child_image = $rekeyed_array[0]; 
    $image_attach = wp_get_attachment_image($child_image['ID'], 'thumbnail'); 
    }; 
?> 
    <li> 
    <a href="<?php the_permalink(); ?>"><?php echo $image_attach; ?><?php $title = the_title('','',false); if(strlen($title) > 50): echo trim(substr($title, 0, 55)).'...'; else: echo $title; endif; ?></a><?php the_excerpt(); var_dump ($child_image['ID']); ?> 
    </li> 
<?php endwhile; endif; ?>   
</ul> 
<?php // Reset Query 
wp_reset_query(); ?> 
</div> 

のvar_dumpは、attachment_idが通過するたびに更新されていないことを示しています。

ご協力いただければ幸いです。

0

多くの不満の後、私はこれがnifty functionであることがわかりました。ポストの最初のイメージを見つけるためにデータベースに照会します。これは私が見逃していたキーです。それはまた、特集された画像を最初にテストするので、それも同様に世話をします。私は自分の子関数ファイルに関数を入れて、ページに必要なときに呼び出すだけです。

$size = 'thumbnail';を追加する必要があることに注意してください。彼女の説明にはサムネイルが返されますが、フルサイズの画像が返されているためです。この変数は関数全体で使用されるため、値を与えるだけです。

ありがとう、Amberweinberg!

関連する問題