infocentre
  • 0
Новичок

WordPress: Предварительная загрузка изображений для следующего поста

  • 0

Как следует из названия, я хотел бы, чтобы в мои функции вставили хороший код, который предварительно загружает любые изображения, прикрепленные к следующему сообщению.

Это означает, что пока мои пользователи просматривают, их страница будет загружаться, но на самом деле будет загружаться следующая страница, поэтому, когда вы переходите по ссылке, изображения уже должны быть там и ждать!

Думайте об этом как о «буферизации» изображения.

Пара вещей, на которые стоит обратить внимание: я использую функцию post_thumbnail и настраиваю разные размеры через functions.php. У меня также есть плагин, который позволяет использовать несколько избранных изображений для публикации.

Я задал этот вопрос в stackoverflow (кто указал мне здесь), и мне дали этот код для помещения в цикл;

    <?php
$next_post = get_adjacent_post(false, '', false );// set last param to true if you want post that is chronologically previous
$args = array('post_type' => 'attachment', 'numberposts' => -1, 'post_parent' => $next_post->ID);
$attachments = get_posts($args);
?>
<script type="text/javascript">
    $(document).ready(function(){
        var images = '';
        <?php foreach($attachments as $attachment):
            $mime = $attachemnt->post_mime_type;
            if($mime == 'image/jpeg' || $mime == 'image/gif' || $mime == 'image/png'): 
        ?>
        images += '<img src="<?php $attachment->guid ?>" style="display:none" />';
        <? endif; endforeach; ?>
        if(images != ''){
            $(body).append(images);
        }
    });
</script>

Хотя кажется, что он может стать победителем, похоже, он еще не справляется со своей задачей. В моем источнике страницы он возвращает следующее:

<script type="text/javascript">
    jQuery(document).ready(function(){
        var images = '';
                if(images != ''){
            jQuery(body).append(images);
        }
    });
</script>

Возможно, я делаю что-то не так, так как я хронический копипастер!

У кого-нибудь есть мысли по этому поводу?

Спасибо, парни!

Share
  1. сообщения должны быть добавлены wordpress, а не как <img тег. также вы можете посмотреть codecanyon.net/item/preloadify/133636

    • 0
    • Спасибо @Bainternet. Эта часть codecanyon не загружает изображения из следующего (или предыдущего) сообщения, а просто показывает красивое загружаемое изображение, пока они загружаются! Изображения в моих сообщениях вызываются не с помощью <img тегов, они вызываются с использованием таких кодов: ` <?php if ( has_post_thumbnail() ) { the_post_thumbnail('portrait'); } else { echo 'Что-то пошло не так?‘; } ?>` Я думал, что это автоматически сделало их прикрепленными к сообщению?

      • 0
    • Вы можете установить флажок, чтобы пометить этот ответ как «принятый». Таким образом, система узнает, что вы нашли решение, и вопрос не останется «без ответа».

      • 0
    • Спасибо за это, но на самом деле миниатюра автоматически прикрепляется к сообщению. Поскольку я также использую вложения (например, изображения в сообщении), лучше придерживаться вызова вложений. Спасибо, бро!

      • 0
  2. Вот какая камера другого фрагмента кода — БОЛЬШОЕ спасибо @Ivan Ivanic

    <?php
        $next_post = get_adjacent_post(false, '', false );// set last param to true if you want post that is chronologically previous
        //for debug
        if(!empty($next_post)){
           echo 'Next post title is: '.$next_post->post_title;
        } else {
            echo 'global $post is not set or no corresponding post exists';
        }
        $args = array('post_type' => 'attachment', 'numberposts' => -1, 'post_parent' => $next_post->ID);
        $attachments = get_posts($args);
        // print attachments for debug
        echo '<pre>';print_r($attachments);echo '</pre>'; ?> <script type="text/javascript">
        $(document).ready(function(){
            var images = '';
            <?php foreach($attachments as $attachment):
                $mime = $attachment->post_mime_type;
                if($mime == 'image/jpeg' || $mime == 'image/gif' || $mime == 'image/png'): 
            ?>
            images += '<img src="<?php echo $attachment->guid ?>" style="display:none" />';
            <? endif; endforeach; ?>
            if(images != ''){
                $('body').append(images);
            }
        }); </script>
    
    • 0
  3. Поскольку вы используете Post Thumbnails, измените свой код на этот:

        <?php
    $next_post = get_adjacent_post(false, '', false );// set last param to true if you want post that is chronologically previous
    $thumbnail = '';
    ?>
    <script type="text/javascript">
        $(document).ready(function(){
            var images = '';
            <?php $thumbnail = wp_get_attachment_image_src ( get_post_thumbnail_id ( $next_post->ID ), "size"); 
            if ($thumbnail != false && $thumbnail != ''){
                ?>
                images += '<img src="<?php echo $thumbnail[0]; ?>" style="display:none" />';
                <?php
            }
            ?>
            if(images != ''){
                $(body).append(images);
            }
        });
    </script>
    
    • 0

Оставить ответ

You must login to add an answer.