wp_get_attachment_url重复图像

时间:2015-06-11 09:13:56

标签: php wordpress

为什么这段代码只是循环相同的图像?我想在<li> html标签中显示不同的图像,但它只是重复图像。

$querystr = "
                SELECT wposts.ID, wposts.post_title
                FROM $wpdb->posts wposts
                WHERE wposts.post_type = 'attachment'
                AND wposts.post_mime_type = 'image/jpeg'
                ORDER BY RAND() LIMIT 10
            ";

            $id = $wpdb->get_results($querystr, ARRAY_A);
            ) );

if(is_array($id) || is_object($id)){
                        //  var_dump($id);
                        //  echo "Total Photos: " . count($id);
                            foreach($id as $data){

                                $photo= wp_get_attachment_url( get_post_thumbnail_id( $data->ID));
                                $title = wp_get_attachment_image($data->post_title);


                            echo '<li><img src="'.$photo.'" alt="'.$title.'"/></li>';
                                //var_dump($photo);
                            }
                        }

2 个答案:

答案 0 :(得分:3)

  1. $id后面有语法错误,括号) );将其删除
  2. 使用ARRAY_A返回数组结果集,使用错误的对象。
  3. 如果您有附件ID,请使用wp_get_attachment_url它将返回图片网址。 如果您同时使用wp_get_attachment_urlget_post_thumbnail_id,则只返回使用页面中的Featured Image附加帖子的图片或发布部分。
  4. 当数据以数组形式检索数据时
  5. 使用 $array['column_name'] 或者

    如果它在对象 USE:$object->column_name

    所以正确的代码是。

        $querystr = "
                    SELECT wposts.ID, wposts.post_title
                    FROM $wpdb->posts wposts
                    ORDER BY RAND() LIMIT 10
                ";
    
    $img_array = $wpdb->get_results($querystr, ARRAY_A);
    // For Array 
    if (is_array($img_array)) {
    
        foreach ($img_array as $data) {
    
            $photo = wp_get_attachment_url(get_post_thumbnail_id($data['ID']));
            $title = ($data['post_title']);
    
    
            echo '<li><img src="' . $photo . '" alt="' . $title . '"/>' . $title . '</li>';
    
        }
    }
    
    
    // For Object 
    $img_object = $wpdb->get_results($querystr);
    
    if (is_object($img_object)) {
    
        foreach ($img_array as $data) {
    
            $photo = wp_get_attachment_url(get_post_thumbnail_id($data->ID));
            $title = ($data->post_title);
    
    
            echo '<li><img src="' . $photo . '" alt="' . $title . '"/>' . $title . '</li>';
    
        }
    }
    

答案 1 :(得分:0)

要从帖子中选择图片,您应该选择已发布的帖子。 将查询更改为

$querystr = "
                SELECT wposts.ID, wposts.post_title
                FROM $wpdb->posts wposts
                WHERE wposts.post_type = 'attachment'
                AND wposts.post_mime_type = 'image/jpeg'
                AND wposts.post_status = 'publish'
                ORDER BY RAND() LIMIT 10
            ";