如何显示WordPress帖子中的所有图像?

时间:2010-10-19 20:06:50

标签: php wordpress

我正在尝试从WP帖子中获取所有图像,以便从中创建幻灯片。谷歌搜索并找到这段代码来检索和显示帖子中的图像:

function getImage($num) {
    global $more;
    $more = 1;
    $link = get_permalink();
    $content = get_the_content();
    $count = substr_count($content, '<img');
    $start = 0;
    for($i=1;$i<=$count;$i++) {
        $imgBeg = strpos($content, '<img', $start);
        $post = substr($content, $imgBeg);
        $imgEnd = strpos($post, '>');
        $postOutput = substr($post, 0, $imgEnd+1);
        $postOutput = preg_replace('/width="([0-9]*)" height="([0-9]*)"/', '',$postOutput);;
        $image[$i] = $postOutput;
        $start=$imgEnd+1;
    }
    if(stristr($image[$num],'<img')) { echo '<a href="'.$link.'">'.$image[$num]."</a>"; }
    $more = 0;
}

你可以想象你然后使用getImage('1')等从帖子中获取第1张,第2张图片等。这不是制作幻灯片的理想选择,因为我不知道会有多少张图片是

有没有办法修改上面的代码来获取用于创建foreach循环的图像数组?对不起,如果我的逻辑有点瑕疵,我不是PHP专家,你可能已经猜到了。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

此代码已找到所有图像,但只打印出1。

尝试这种变体,它应该回显所有图像,而不仅仅是1.我没有测试过这个,但是如果原始代码有效,那就应该这样。

function getImage() {
    global $more;
    $more = 1;
    $link = get_permalink();
    $content = get_the_content();
    $count = substr_count($content, '<img');
    $start = 0;
    for($i=1;$i<=$count;$i++) {
        $imgBeg = strpos($content, '<img', $start);
        $post = substr($content, $imgBeg);
        $imgEnd = strpos($post, '>');
        $postOutput = substr($post, 0, $imgEnd+1);
        $postOutput = preg_replace('/width="([0-9]*)" height="([0-9]*)"/', '',$postOutput);;
        if(stristr($postOutput,'<img')) { echo '<a href="'.$link.'">'.$postOutput."</a>"; }
        $start=$imgEnd+1;
    }
    $more = 0;
}

还可以对此代码进行更多清理,但我只修改了您的内容。

答案 1 :(得分:1)

代码中的代码稍有变化$ imgBeg代替$ imgEnd然后它工作正常

function getImage() {
global $more;
$more = 1;
$link = get_permalink();
$content = get_the_content();
$count = substr_count($content, '<img');
$start = 0;
for($i=1;$i<=$count;$i++) {
    $imgBeg = strpos($content, '<img', $start);
    $post = substr($content, $imgBeg);
    $imgEnd = strpos($post, '>');
    $postOutput = substr($post, 0, $imgEnd+1);
    $postOutput = preg_replace('/width="([0-9]*)" height="([0-9]*)"/', '',$postOutput);;
    if(stristr($postOutput,'<img')) { echo '<a href="'.$link.'">'.$postOutput."</a>"; }
    $start=$imgBeg+1;
}
$more = 0;

}