PHP wordpress函数在函数文件中不执行

时间:2013-11-25 14:45:47

标签: php wordpress function

以下功能查找Wordpress精选图片,如果帖子没有,则会搜索第一个附件图片并使用该图片。

它在页面上的PHP中完美执行,但是当我尝试将它用作可以被调用的函数时,ELSE部分内的第二部分不能用于某些帖子。

我已经使用SQL查询进行了检查,没有理由说它不起作用。

function title_image($size,$post_id,$class){



if(has_post_thumbnail($post_id)){
            $return = get_the_post_thumbnail($post_id,$size,array('class' => $class));
        }
        else {
            //Section not working on all posts //
            $imgs = get_posts(array('post_type' => 'attachment', 'numberposts' => 1, 'post_parent' => $post_id));
            foreach($imgs as $img){
                $return = '<img src="'.$img->guid.'" class="'.$class.'" />';
            }
        }
        return $return;
}

在这样的页面上调用:

echo title_image('full',get_the_ID(),'featuredimg');

为什么放在页面上时会起作用,但在作为函数调用时却不起作用

2 个答案:

答案 0 :(得分:1)

get_posts args中,设置帖子状态和 mime类型

'post_status' => 'inherit',
'post_mime_type' => 'image'

此外,您不应使用guid,请使用wp_get_attachment_image_src()获取附件src:

foreach( $imgs as $img ){
    $thumb = wp_get_attachment_image_src( $img->ID, $size, false );
    $return = '<img src="' . $thumb[0] . '" class="' . $class . '" />';
}

我建议使用get_children来检索附件,而不是get_posts

http://codex.wordpress.org/Function_Reference/get_children#Show_the_first_image_associated_with_the_post

答案 1 :(得分:0)

仍然没有解释原因,但问题在于has_post_thumbnail()函数。

对于某些帖子而言,这是正确的,因为我们无法解释,因为他们没有精选图片。

修改代码以解决此问题:

function title_image($size,$postid,$class){


    $return = get_the_post_thumbnail($postid,$size,array('class' => $class));

    if(!$return) {
        $imgs = get_children(array('post_type' => 'attachment', 'numberposts' => 1, 'post_parent' => $postid));
        foreach($imgs as $img){
            $return = '<img src="'.$img->guid.'" class="'.$class.'" />';
        }
    }
    return $return;
}