কীভাবে গতিশীলভাবে ওয়ার্ডপ্রেস চিত্রটি অন-দ্য ফ্লাই করুন (কাস্টম ফিল্ড / থিম বিকল্প)


12

সুতরাং - একজন ক্লায়েন্টের অনুরোধে, আমি কোনও স্ট্যান্ডার্ড ওয়ার্ডপ্রেস উপায় নয়, তবে একটি চিত্রের আকার পরিবর্তন করতে সক্ষম হওয়া প্রয়োজন a আমি কেবল কাস্টম_হেডার অঞ্চলটি ব্যবহার করতে পারি না, কারণ সেখানে দুটি বা তিনটি থাকবে (লিঙ্কটি কীভাবে কাজ করা উচিত তা চয়ন করতে ব্যবহারকারীকে ছবিটি আপলোড করার পরে আমার কাছে কিছু বিকল্প রয়েছে (পৃষ্ঠা, পোস্ট, বিভাগ, কোনও লিঙ্ক, বাহ্যিক লিঙ্ক ইত্যাদি))। আমি দুর্দান্ত সাফল্যের সাথে অপশন ফ্রেমওয়ার্ক থিমটি ব্যবহার করছি এবং আমি চিত্রটি এসআরসিটি ঠিকঠাকভাবে পুনরুদ্ধার করতে পারি, এটি কোনওভাবেই অ্যাড_মাজে_সাইজ () ফাংশনটির সাথে সাধারণত পোস্ট থাম্বনেইলের জন্য ব্যবহার করা যায় কিনা তা বিষয় of আমি বরং সত্যিকার অর্থে ডাইমথম্ব রুটে গিয়ে ওয়ার্ডপ্রেস এপিআইয়ের সাথে লেগে থাকতাম না (আমি জানি যে এটি আমি প্রথম স্থানে যা করছি তার সাথে সামান্য বিপরীতমুখী ...)। কোন সাহায্যের ব্যাপকভাবে প্রশংসা হবে। ধন্যবাদ!


1
ঠিক আছে - আমি মনে করি আমি এটি সম্পাদন করতে পেরেছি: <?php $main_image = of_get_option('of_main_image'); $thepost = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE guid = '$main_image'" ) ); $theID = $thepost->ID; echo wp_get_attachment_image( $theID, 'homepage_main' ); ?> যে কেউ এখানে কোনও সুরক্ষা গর্ত বা বিজোড়তা দেখতে পাবে? অন্যদের জন্যও কার্যকর হতে পারে। ধন্যবাদ!
Zach

যেহেতু 'নির্দেশিকা' সেখানে চিত্রের URL টি সংরক্ষিত আছে (বিকল্প ফ্রেমওয়ার্ক এই ডেটাটি সংযুক্তি পোস্ট_প্রকার হিসাবে সংরক্ষণ করতে WooThemes মিডিয়া আপলোডার ব্যবহার করে) তবে আমি ডেটা যেমন অ্যাক্সেস করতে পারি :)
Zach


1
সম্পূর্ণতার জন্য সবেমাত্র এটি যুক্ত করা হয়েছে। বন্ধ হওয়া উচিত নয়, কারণ অন্য সমাধানের ক্ষতি হবে না।
কায়সার

1
আমি তৈরি করেছি এমন অনেকগুলি ওয়েবসাইটে আমি এই সমস্যার মুখোমুখি হয়েছি। আমি অনুকূল উপায়ে কাজ করে এমন কোনও সমাধান খুঁজে পেলাম না, তাই আমি নিজের প্লাগইনটি তৈরি করেছিলাম! আশা করি এটা কাজে লাগবে! wordpress.org/plugins/fly-dynamic-image-resizer
জুনাইদ ভূরা

উত্তর:


6

অন্তর্নির্মিত ওয়ার্ডপ্রেস ফাংশনগুলি ব্যবহার করে ফ্লাইতে ওয়ার্ডপ্রেস চিত্রগুলি আবার আকার দিন।

vt_resizeএকটি কাস্টম ফিল্ডে অবস্থিত ওয়ার্ডপ্রেস চিত্রগুলিকে গতিশীলভাবে পুনরায় আকার দিতে ফাংশনটি ব্যবহার করুন , বৈশিষ্ট্যযুক্ত চিত্র, আপলোড ডিরেক্টরি, নেক্সটজেন গ্যালারী ওয়ার্ডপ্রেস প্লাগইন, এমনকি কোনও অফসাইট চিত্রের বাইরের লিঙ্ক।

এটি ব্যবহার করা খুব সহজ, কেবলমাত্র functions.phpআপনার সক্রিয় করা ওয়ার্ডপ্রেস থিমের আপনার ওয়ার্ডপ্রেস থিমের ফাইলটিতে নীচের কোডটি কেবল অনুলিপি / পেস্ট করুন ।

তারপরে, যেখানেই আপনাকে ফ্লাইতে কোনও চিত্র পুনরায় আকারের প্রয়োজন হয়, কেবলমাত্র ফাংশনের মন্তব্যে প্যারামিটার ব্যবহারের ব্যাখ্যা দিয়ে সেই ফাংশনে একটি কল দিন।

এখানে পোস্ট আইডি, পোস্ট নিজেই, পোস্টের কাস্টম ফিল্ডের মানগুলি পাওয়া যায় এবং চিত্রটি কাস্টম ফিল্ড থেকে ক্রিয়াকলাপে ফ্লাইটিকে পুনরায় আকারের করে ফ্লাইয়েড করার জন্য চিত্রটির গতিশীল আকার দেওয়া যায়।

<?php
// Place this in your functions.php 
function get_postID(){
    global $wp_query;
    $thePostID = $wp_query->post->ID;
}
?>

<?php
// Place the following lines where you want to perform this action.
$postID = get_postID();// Obtain the current Post ID.
$post = get_post($postID);// Takes the current Post ID and returns the database record.
$custom = get_post_custom($post->ID);// Returns a multidimensional array with all custom fields of the Post.
$image = $custom['field-slug'][0];// Specify the array key of the Custom Field containing the image.
// The first parameter is blank. Meaning, we will not be using a Post Attachment.
// The second parameter is the image from our Post's Custom Field value.
// The third and fourth parameters are the width and height of the image after the re-size is performed.
// The fifth parameter means we want to crop this image.
$resizedImage = vt_resize('', $image, 190, 338, true);// Dynamically re-size our image on the fly.
echo '<img src="'.$resizedImage[url].'" width="'.$resizedImage[width].'" height="'.$resizedImage[height].'" title="'.$post->post_title.'" alt="'.$post->post_title.'" />';// The image properties are held in an array. (Use print_r($resizedImage) for array properties.)
?>

একাধিক সাইট সমর্থন সহ vt_resize ফ্লাইতে ওয়ার্ডপ্রেস চিত্রগুলি পুনরায় আকার দিন

  • বর্ণনা: ফাংশনগুলিতে অন্তর্নির্মিত ওয়ার্ডপ্রেস ব্যবহার করে চিত্রগুলি পুনরায় আকার দিন।
  • লেখক: ভিক্টর টিক্সিরা
  • প্রয়োজনীয়তা: পিএইচপি 5.2+, ওয়ার্ডপ্রেস 3.2+

আমি উত্স কোডটি পুনরায় ফর্ম্যাট করেছি যাতে এটি আমার নিজের চোখের জন্য আরও পঠনযোগ্য। আপনি যদি মূল ফর্ম্যাট উত্স কোড চান তবে উপরের লিঙ্কটি দেখুন visit

<?php
/*
* Resize images dynamically using wp built in functions
* Victor Teixeira
*
* php 5.2+
*
* Exemplo de uso:
*
* <?php
* $thumb = get_post_thumbnail_id();
* $image = vt_resize($thumb, '', 140, 110, true);
* ?>
* <img src="<?php echo $image[url]; ?>" width="<?php echo $image[width]; ?>" height="<?php echo $image[height]; ?>" />
*
* @param int $attach_id
* @param string $img_url
* @param int $width
* @param int $height
* @param bool $crop
* @return array
*/
if(!function_exists('vt_resize')){
    function vt_resize($attach_id = null, $img_url = null, $width, $height, $crop = false){
    if($attach_id){
        // this is an attachment, so we have the ID
        $image_src = wp_get_attachment_image_src($attach_id, 'full');
        $file_path = get_attached_file($attach_id);
    } elseif($img_url){
        // this is not an attachment, let's use the image url
        $file_path = parse_url($img_url);
        $file_path = $_SERVER['DOCUMENT_ROOT'].$file_path['path'];
        // Look for Multisite Path
        if(file_exists($file_path) === false){
            global $blog_id;
            $file_path = parse_url($img_url);
            if(preg_match('/files/', $file_path['path'])){
                $path = explode('/', $file_path['path']);
                foreach($path as $k => $v){
                    if($v == 'files'){
                        $path[$k-1] = 'wp-content/blogs.dir/'.$blog_id;
                    }
                }
                $path = implode('/', $path);
            }
            $file_path = $_SERVER['DOCUMENT_ROOT'].$path;
        }
        //$file_path = ltrim( $file_path['path'], '/' );
        //$file_path = rtrim( ABSPATH, '/' ).$file_path['path'];
        $orig_size = getimagesize($file_path);
        $image_src[0] = $img_url;
        $image_src[1] = $orig_size[0];
        $image_src[2] = $orig_size[1];
    }
    $file_info = pathinfo($file_path);
    // check if file exists
    $base_file = $file_info['dirname'].'/'.$file_info['filename'].'.'.$file_info['extension'];
    if(!file_exists($base_file))
    return;
    $extension = '.'. $file_info['extension'];
    // the image path without the extension
    $no_ext_path = $file_info['dirname'].'/'.$file_info['filename'];
    $cropped_img_path = $no_ext_path.'-'.$width.'x'.$height.$extension;
    // checking if the file size is larger than the target size
    // if it is smaller or the same size, stop right here and return
    if($image_src[1] > $width){
        // the file is larger, check if the resized version already exists (for $crop = true but will also work for $crop = false if the sizes match)
        if(file_exists($cropped_img_path)){
            $cropped_img_url = str_replace(basename($image_src[0]), basename($cropped_img_path), $image_src[0]);
            $vt_image = array(
                'url'   => $cropped_img_url,
                'width' => $width,
                'height'    => $height
            );
            return $vt_image;
        }
        // $crop = false or no height set
        if($crop == false OR !$height){
            // calculate the size proportionaly
            $proportional_size = wp_constrain_dimensions($image_src[1], $image_src[2], $width, $height);
            $resized_img_path = $no_ext_path.'-'.$proportional_size[0].'x'.$proportional_size[1].$extension;
            // checking if the file already exists
            if(file_exists($resized_img_path)){
                $resized_img_url = str_replace(basename($image_src[0]), basename($resized_img_path), $image_src[0]);
                $vt_image = array(
                    'url'   => $resized_img_url,
                    'width' => $proportional_size[0],
                    'height'    => $proportional_size[1]
                );
                return $vt_image;
            }
        }
        // check if image width is smaller than set width
        $img_size = getimagesize($file_path);
        if($img_size[0] <= $width) $width = $img_size[0];
            // Check if GD Library installed
            if(!function_exists('imagecreatetruecolor')){
                echo 'GD Library Error: imagecreatetruecolor does not exist - please contact your webhost and ask them to install the GD library';
                return;
            }
            // no cache files - let's finally resize it
            $new_img_path = image_resize($file_path, $width, $height, $crop);
            $new_img_size = getimagesize($new_img_path);
            $new_img = str_replace(basename($image_src[0]), basename($new_img_path), $image_src[0]);
            // resized output
            $vt_image = array(
                'url'   => $new_img,
                'width' => $new_img_size[0],
                'height'    => $new_img_size[1]
            );
            return $vt_image;
        }
        // default output - without resizing
        $vt_image = array(
            'url'   => $image_src[0],
            'width' => $width,
            'height'    => $height
        );
        return $vt_image;
    }
}
?>

হেরস নামে অনেক বেশী সাদাসিধে ফাংশন (কোন মাল্টি সাইট সমর্থন, কিন্তু আছে তাদের অধিকার মনে ব্যবহারের বহু-সাইটে যে কেউ?) Github.com/BrettMW/img_resize
developerbmw

@ কাইজারের লিঙ্কটির মতো একটি প্রস্তুত ব্যবহারযোগ্য সমাধান github.com/bueltge/WP- ইমেজ- রিসারাইজার
বেল্টজ

@ বেল্টজ, এটি কাজ করে, তবে ছবিগুলি ঝাপসা করে কেন আপনার কোনও ধারণা আছে? দেখে মনে হচ্ছে এটি সমস্ত চিত্র 150x150 করে তোলে। কোন ধারণা কেন এমন হচ্ছে?
অয়নট

@ বেল্টজ, কিছুই নয়। আমি সমস্যাটি খুঁজে পেয়েছি। আমি ব্যবহার দ্বিতীয় প্যারামিটারটি হিসাবে পূর্ণ আকার সেট করতে ছিলwp_get_attachment_image_url()
Ionut

@ বেল্জ, এটি স্ক্র্যাচ করুন। দেখে মনে হচ্ছে এটি কাজ করছে না ... আপনি কি আমাকে এই সাহায্য করতে পারেন? আমি যখন চিত্রের আকার যুক্ত করি তখন fullচিত্রগুলির বিভিন্ন আকার থাকে।
Ionut
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.