Как отобразить все изображения из поста WordPress? - PullRequest
1 голос
/ 20 октября 2010

Я пытаюсь получить все изображения из поста 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 ]

2 голосов
/ 20 октября 2010

Этот код уже находит все изображения, но только распечатывает 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 голос
/ 28 января 2013

Небольшое изменение в коде на концах $ 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;

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...