试图从Wordpress帖子中获取图像

时间:2012-03-08 01:51:46

标签: wordpress wordpress-theming

我拼凑了下面的代码并且它可以工作,但感觉太乱了:

function get_my_img() {
if($imgs = get_posts(array(
    'post_parent' => get_the_ID(),
    'post_type' => 'attachment',
    'numberposts' => 1,
    'post_mime_type' => 'image',
    'orderby' => 'menu_order',
    'order' => 'DESC'
    ))){
foreach($imgs as $img) {
    $img_med = wp_get_attachment_image($img->ID,'medium');
    }
foreach($imgs as $img) {
    $img_larg = wp_get_attachment_image($img->ID,'large');
    }
if (preg_match('/<img.+?src(?: )*=(?: )*[\'"](.*?)[\'"]/si', $img_larg, $img_r)){
    echo '<a class="myimage" href="' . $img_r[1] .'">' . $img_med .'</a>';} 
    }
}

我很确定有一个更简单的方法可以做到这一点我完全忽略了。

本质上,当在循环中调用此函数时,它会输出当前帖子中的最后一个图像(附加),其中 medium 大小包含在链接中它的大小。

任何见解将不胜感激。

2 个答案:

答案 0 :(得分:1)

更容易做到:

function get_my_img() {
if($imgs = get_posts(array(
    'post_parent' => get_the_ID(),
    'post_type' => 'attachment',
    'numberposts' => 1,
    'post_mime_type' => 'image',
    'orderby' => 'menu_order',
    'order' => 'DESC'
    ))){

    $img_med = wp_get_attachment_image($imgs[0]->ID,'medium');
    $img_larg = wp_get_attachment_image_src($imgs[0]->ID,'large');

    echo '<a class="myimage" href="' . $img_larg[0] .'">' . $img_med .'</a>';
} 
}

答案 1 :(得分:1)

preg_match()内容不是必需的。如果你打印$ img_med和$ img_larg,你会看到它们是数组,包含三个元素:图像的路径,宽度和高度。所以你可以输出你需要的html。