php - 在 WordPress 中重新加载不同尺寸的图像

标签 php jquery wordpress

我写了一些jquery/php来在窗口调整大小时重新加载我的wordpress主题中的图像。它加载随机代码然后崩溃。欢迎任何想法。 谢谢。

PHP

function head_scripts() {
    if ( !is_admin() ) {
        wp_localize_script( 'init', 'theme_info', array( 'ajax' => admin_url( 'admin-ajax.php' ) ) );
    }
} add_action('init', 'head_scripts');


function image_echo($size, $i_ID) {
    $image_attr = wp_get_attachment_image_src(get_post_thumbnail_id($i_ID), $size);

    ?><img itemprop="image" class="ajax-resize" attachment-id="<?php echo get_post_thumbnail_id ($i_ID) ?>" src="<?php echo $image_attr[0]; ?>" width="<?php echo $image_attr[1]; ?>" height="<?php echo $image_attr[2]; ?>" alt="<?php echo get_the_title($i_ID); ?>"/><?php
}


function resize_ajax_image() {
    if(isset($_POST['image_size'])) {
        $image_size = $_POST['image_size'];
    }

    if(isset($_POST['attachment_id'])) {
        $attachment_id = $_POST['attachment_id'];
    }

    image_echo($image_size, $attachment_id);
    die();

} add_action( 'wp_ajax_nopriv_resize_ajax_image', 'resize_ajax_image' );
add_action( 'wp_ajax_resize_ajax_image', 'resize_ajax_image' );

jQuery

$(document).ready(function() {

    function find_ajax_images(imageSize) {
        $('.ajax-resize').each(function(){
            var attachmentID = parseInt($(this).attr('attachment-id'));
            $.ajax(
                theme_info.ajax,{
                    type: 'POST',
                    cache: false,
                    data: {
                        action: 'resize_ajax_image',
                        image_size: imageSize,
                        attachment_id: attachmentID
                    },
                    success: function(resizeImage){
                        $(this).html(resizeImage);
                    }
                });
        });
    }


    function fixImages() {
        var winHeight = $(window).height();
        var winWidth = $(window).width();

        if (winWidth < 800) {
            //$('body').css('background-color','red');
            find_ajax_images('mobile');

        } else if (winWidth < 1024) {
            //$('body').css('background-color','yellow');
            find_ajax_images('small_1024');

        } else if (winWidth < 1280) {
            //$('body').css('background-color','green');
            find_ajax_images('medium_1280');

        } else if (winWidth < 1440) {
            //$('body').css('background-color','white');
            find_ajax_images('medium_1440');

        } else if (winWidth < 1680) {
            //$('body').css('background-color','magenta');
            find_ajax_images('large_1680');

        } else { // > 1680
            //$('body').css('background-color','brown');
            find_ajax_images('large_1920');

        } //nested if
    }

    $(window).bind('resize', function () { 
        fixImages();
    });

});

最佳答案

好的,我们开始吧:

img_get.php:

<?php
if (is_file($_GET['img'].'_'.$_GET['size'].'.jpg')) {
   $myImage = imagecreatefromjpeg($_GET['img'].'_'.$_GET['size'].'.jpg');
} else  {$myImage = imagecreatefromjpeg($_GET['img'].'.jpg');
header("Content-type: image/jpeg");
imagejpeg($myImage);
imagedestroy($myImage);
?>

html 示例:

<img class="fixableimg" isrc="common">

js:

function img_size(Wwidth) {
    if (Wwidth < 800) {
        return("mobile");
    }
    if (Wwidth < 1024) {
        return ("small_1024");
    }
    if (Wwidth < 1280) {
        return ("small_1280");
    }
    //.....
    return ("large_1920");

}

    $(window).bind('resize', function() {
        $('.fixableimg').each(function() {
            var obj = $(this);
            var img = obj.attr('isrc');
            var Wwidth = $(window).height();
            obj.attr('src','img_get.php?img='+img+'&size='+img_size(Wwidth));
            });
    });

类似的事情

关于php - 在 WordPress 中重新加载不同尺寸的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6853583/

相关文章:

php - 注册表中的信息未提交到 phpmyadmin 中的表中

javascript - 检测哪一行 JS 正在操作给定的 HTML 元素

wordpress - 我在 Wordpress 中的菜单无缘无故换行。

html - 当页脚位置 = 绝对时将响应式菜单插入页脚

php - 自己的Wordpress插件,MySQL语法问题

php - 根据用户角色向 WooCommerce 付款方式分配百分比费用

javascript - 显示 : table-cell absolute positioning query

javascript - 如何将此脚本更改为 OnMouseOver?

php - 为什么在数组索引中与 $b++ 一起使用时,PHP 对 $b 和 $b = $b 的计算方式不同

jquery - 选择链接中的增量值并分配给 var