বৈশিষ্ট্যযুক্ত চিত্রের জন্য ন্যূনতম মাত্রার প্রয়োজনীয়তা?


14

আমি একাধিক লেখককে নিয়ে একটি বেসবল ওয়েবসাইট তৈরি করছি। অতীত অভিজ্ঞতা থেকে, আপনি কাউকে ব্যক্তিগতভাবে কতটা চেনেন তা বিবেচনা করুন না, এর অর্থ এই নয় যে তারা আপনার নির্দেশাবলী অনুসরণ করবে বা পড়বে।

বলা হচ্ছে, আমি চাইব যে কোনও চিত্র যে কোনও চিত্র "বিশিষ্ট চিত্র হিসাবে ব্যবহার করুন" ন্যূনতম 640px প্রশস্ত এবং সর্বনিম্ন 360px লম্বা হওয়া উচিত।

আমার প্রয়োজন যে প্রতিটি পোস্টে WyPiekacz প্লাগইন ব্যবহার করে একটি বৈশিষ্ট্যযুক্ত চিত্র থাকতে হবে ; বৈশিষ্ট্যযুক্ত চিত্র ছাড়া পোস্টটি প্রকাশ করা হবে না। আমি বেন্টারনেটের কোড ব্যবহার করে মিডিয়া যুক্ত করুন "ইউআরএল থেকে" ট্যাবটি সরিয়ে অন্য লেখককে হটলিঙ্ক করার সুযোগটি ব্লক করেছি।

এখন আমার প্রয়োজন দরকার যে বৈশিষ্ট্যযুক্ত চিত্র হিসাবে ব্যবহৃত যে কোনও চিত্র কমপক্ষে 640px বাই 360px হওয়া উচিত। আমি কোনও কোডার নয়, তবে আমি মাওর বড়জানির কোডটি একটি প্রারম্ভিক পয়েন্ট হিসাবে ব্যবহার করার চেষ্টা করেছি এবং ফল লাভ হয়নি। তার কোড আপলোড করা কোনও চিত্রের ন্যূনতম মাত্রা জোর করে ।


আপনার প্রশ্নের উত্তর দিতে পারে না, তবে আপনাকে সহজেই ফিল্টার এবং ফাংশনগুলির একটি দুর্দান্ত সংগ্রহের জন্য আপনাকে ধন্যবাদ জানাতে হবে;)
ওলে হেনরিক স্কোগ্রাস্ট্রাম ২

ডিটো, ওলে হেনরিক :)
ব্রাসোফিলো

পোস্টগুলির সাথে সংযুক্ত এমন চিত্রগুলি সম্পর্কে কী বলা যায় তবে পোস্ট বৈশিষ্ট্যযুক্ত চিত্র হিসাবে ব্যবহার করার উদ্দেশ্যে নয় ? এটা কি একেবারেই অসম্ভব যে প্রতিটি পোস্টে কেবল পোস্ট ফিচারযুক্ত চিত্রগুলি সংযুক্ত থাকে?
চিপ বেনেট

না, তবে প্রতিটি পোস্টে একটি বৈশিষ্ট্যযুক্ত চিত্র থাকা দরকার। মুর বড়জানির কোড (উপরের লিঙ্ক) ন্যূনতম জোর করার জন্য এটিই মূল কারণ। আপলোডে মাত্রা কাজ করবে না (বা নীচে আনজিস্টাল্টবারের কোড)। এই কোড স্নিপেটগুলি সমস্ত আপলোড করা চিত্রগুলিকে সর্বনিম্ন মাত্রায় বাধ্য করে। ব্যবহারকারীরা তাদের পোস্টগুলিতে অতিরিক্ত চিত্র যুক্ত করতে পারে, তবে "বৈশিষ্ট্যযুক্ত চিত্র" প্রসারিত ছাড়াই থিমের মাপসই পর্যাপ্ত পরিমাণে থাকতে হবে। এ কারণেই আমি আপলোডারের "মিডিয়া লাইব্রেরি" ট্যাবে একটি "চিত্রের মাত্রা" কলামটি চাই। ব্যবহারকারীরা দ্রুত বৈশিষ্ট্যযুক্ত চিত্রের জন্য যথেষ্ট বড় একটি চিত্র চয়ন করতে সক্ষম হবেন।
ট্র্যাভিস প্লাফ্লানজ

আমি পেতে যে আপনার সকল পোস্ট করতে চান একটি বৈশিষ্ট্যযুক্ত চিত্র। কিন্তু যে হবে সবসময় হতে শুধুমাত্র পোস্ট সংযুক্ত ইমেজ? বা পোস্ট হতে পারে অন্যান্য ইমেজ উপরন্তু করার বৈশিষ্ট্যযুক্ত ইমেজ?
চিপ বেনেট

উত্তর:


2

ভাল আপনি যদি WyPiekacz প্লাগইন ব্যবহার করছেন; বৈশিষ্ট্যযুক্ত চিত্রটি আপলোড হয়েছে কিনা তা যাচাই করার জন্য আপনি যেমন বলেছিলেন, বৈশিষ্ট্যযুক্ত চিত্রটি যদি আপনার প্রয়োজনমতো এটি ন্যূনতম ডাইমেন্সের হয় তা পরীক্ষা করতে আপনি এটি সামান্য সামান্য টুইট করতে পারেন।

$has_thumbnail = false;
            if ( ( $post_id > 0 ) && function_exists( 'has_post_thumbnail' ) ) {
                $has_thumbnail = has_post_thumbnail( $post_id );
            }

            $has_thumbnail = apply_filters( 'wypiekacz_check_thumbnail', $has_thumbnail, $post_id, $post_data );

            if ( !$has_thumbnail ) {
                $this->errors[] = array( 'post_thumbnail', __('Post thumbnail (Featured image) is required.', 'wypiekacz') );
            }

আপনি উপরের কোডটি wypiekacz.php এ পরিবর্তন করতে পারেন,

$has_thumbnail_proper_dimension = false;
        if ( ( $post_id > 0 ) && function_exists( 'has_post_thumbnail' ) ) {
            $has_thumbnail = has_post_thumbnail( $post_id );
              list($url, $width, $height) = wp_get_attachment_image_src(get_post_thumbnail_id( $post->ID ), "Full");
                echo $imgsrc[0];
              if($width>=640 and $height>=360){
                  $has_thumbnail_proper_dimension=true;
               }
        }

        $has_thumbnail = apply_filters( 'wypiekacz_check_thumbnail', $has_thumbnail, $post_id, $post_data );

        if ( !$has_thumbnail ) {
            $this->errors[] = array( 'post_thumbnail', __('Post thumbnail (Featured image) is required.', 'wypiekacz') );
        }
        if ( !$has_thumbnail_proper_dimension ) {
            $this->errors[] = array( 'post_thumbnail', __('Post thumbnail (Featured image) should be atleast 640x360.', 'wypiekacz') );
        }

"মিডিয়া লাইব্রেরি ট্যাব" বলতে আপনার অর্থ কী তা আমি বুঝতে পারি না।


আপনি একজন সুন্দর মানুষ! পুরোপুরি কাজ করে! "মিডিয়া লাইব্রেরি ট্যাব" মিডিয়া আপলোড স্ক্রিনে রয়েছে, আপনি যখন মিডিয়াতে "বৈশিষ্ট্যযুক্ত চিত্র সেট করুন" বা "আপলোড / সন্নিবেশ" ক্লিক করেন তখন। এখানে আমার ধারণার একটি স্ক্রিনশট রয়েছে - picasaweb.google.com/lh/photo/…
ট্র্যাভিস Pflanz

আমি একটি পরিবর্তন করেছি। কেবলমাত্র বৈশিষ্ট্যযুক্ত চিত্রের মাত্রা এবং সমস্ত সংযুক্ত চিত্রের আকারগুলি পরীক্ষা list($url, $width, $height) = wp_get_attachment_image_src($post_id, 'full');করতে পরিবর্তিত হয়েছে list($url, $width, $height) = wp_get_attachment_image_src(get_post_thumbnail_id( $post->ID ), "Full"); echo $imgsrc[0];
ট্র্যাভিস প্লাফ্লানজ

@ ট্রাভিসপ্লেঞ্জ এই ফাংশনটি যা " মেডিয়াল লাইব্রেরি ট্যাব" এর কোড সারণী করে ফেলেছে কোডেক্স.ওয়ার্ডপ্রেস.আর. / ফাংশন_প্রকাশ / চিহ্নিত_মেডিয়া_াইটেম এখানে কোনও ফিল্টার নেই তাই আমি মনে করি না যে আপনি ওয়ার্ডপ্রেস ফাইলটিতে ঝাঁকুনির বদলে এটি পরিবর্তন করতে পারবেন .... আপনি গ্রহণ করতে পারেন উত্তর / আপত্তি যদি ব্যবহারযোগ্য ......
রাজীব ব্যাস

2

আমি কোরটি পরীক্ষা করেছিলাম এবং স্পষ্টতই কসরত করার খুব কম জায়গা আছে।

/wp-admin/includes/media.php হ'ল মিডিয়া ট্যাবগুলি যুক্ত হয়

1034 লাইনে ফাংশনটি get_media_item এটিকে সংযুক্তি / মিডিয়া টেবিলটি সরবরাহ করে। আমি এটিতে যে কোনও ফিল্টার উপলভ্য বা এটি পূর্ববর্তী ফাংশনগুলি দেখতে পাচ্ছি না।

ইস্যুটিকে ঘিরে কিছু রেফারেন্স এবং কোড নমুনা।

আমার ধারণা, একটি বিকল্প সমাধান হ'ল আপলোড করা চিত্রগুলির শিরোনাম পরিবর্তন করা এবং এর মাত্রা যুক্ত করা। আমি কোনও আপলোড করা ফাইলের পোস্ট_টাইটেলটি পরিবর্তন করার বিষয়ে নিশ্চিত নই, তবে ফাইলটির নামকরণ নিজেই এই দুটি ফিল্টার দিয়ে অর্জন করা যেতে পারে: স্যানিটাইজ_ফিল_নাম এবং ডাব্লুপি_হ্যান্ডল_আপলোড_প্রিফিল্টার


সুতরাং, আপনি যা বলছেন তা হ'ল এটি সম্ভব হতে পারে ... হতে পারে? আমি সত্যিই কোনও কোডার নই, সুতরাং যখন লেখার কাজগুলি আসে তখন আমি অন্যের দয়াতে থাকি। কোন সমর্থন দুর্দান্ত হবে।
ট্র্যাভিস প্লাফ্লানজ

1

একটি সম্পূর্ণ উত্তর নয় এবং অনুগ্রহের জন্য নয়, এটি একটি প্রমাণ যা প্রাথমিক ধারণাটি কাজ করে:

function wpse_attachment_dimension_check( $form_fields, $post ) {

    $meta = wp_get_attachment_metadata($post->ID);

    if ( !empty[$meta['width']] )
        if ( $meta['width'] <= 999 or $meta['height'] <= 349 ) 
        {   
            echo '<p class="error">Image dimensions ...bla</p>';
            exit;
        }
        else
        {
             // Return all form fields
             return $form_fields;
        }
}

add_filter( 'attachment_fields_to_edit', 'wpse_attachment_dimension_check', 10, 2 );

মাত্র একটি 60 সেকেন্ডস্নিপেট এবং এতে একটি বড় সমস্যা রয়েছে: এটি প্রতিটি আপলোডের জন্য আগুন জ্বালিয়ে দেবে, এবং কেবলমাত্র কেউ যদি বৈশিষ্ট্যযুক্ত চিত্র যুক্ত করতে প্রস্তুত হয় না, কারণ আমাদের কাছে চিত্র আপলোডারের প্রসঙ্গটি পাওয়ার উপায় নেই। এটি চারপাশে কাজ করার কিছু উপায় রয়েছে, মূলত কিছু জেএস হেরফের দিয়ে with

আমার এখনই কাজ করা উচিত, এবং এটি নিয়ে পরীক্ষা করার সময় নেই। তবে আমি যতটা সম্ভব সাহায্য করতে চেয়েছিলাম এবং অন্যদের জন্য এটি সম্ভবত একটি সূচনা পয়েন্ট।

চিয়ার্স


উত্তরের জন্য ধন্যবাদ, আপনার কোডটি মূলত মওর বড়জানির কোড যা করে (যা প্রশ্নের সাথে লিঙ্কযুক্ত) তা করে, যদিও আপনার চেয়ে আরও ভাল।
ট্র্যাভিস প্লাফ্লানজ

1

এটি সবচেয়ে মার্জিত উত্তর নয় ... তবে এটি কার্যকর! 'ওয়াইপিকাকজ' প্লাগইনটি দুর্দান্ত হলেও তিন বছরে আপডেট হয়নি।

add_action('transition_post_status', 'check_featured_image_size_after_save', 10, 3);

function check_featured_image_size_after_save($new_status, $old_status, $post){
  $run_on_statuses = array('publish', 'pending', 'future');
  if(!in_array($new_status, $run_on_statuses))
    return;

  $post_id = $post->ID;
  if ( wp_is_post_revision( $post_id ) )
    return; //not sure about this.. but apparently save is called twice when this happens

  $image_data = wp_get_attachment_image_src( get_post_thumbnail_id( $post_id ), "Full" );
  if(!$image_data)
    return; //separate message if no image at all. (I use a plugin for this)

  $image_width = $image_data[1];
  $image_height = $image_data[2];

  // replace with your requirements.
  $min_width = 900;
  $min_height = 400;
  if($image_width < $min_width || $image_height < $min_height){
    // Being safe, honestly $old_status shouldn't be in $run_on_statuses... it wouldn't save the first time!
    $reverted_status = in_array($old_status, $run_on_statuses) ? 'draft' : $old_status;
    wp_update_post(array(
      'ID' => $post_id,
      'post_status' => $reverted_status,
    ));
    $back_link = admin_url("post.php?post=$post_id&action=edit");
    wp_die("Featured Image not large enough, must be at least ${min_width}x$min_height. Reverting status to '$reverted_status'.<br><br><a href='$back_link'>Go Back</a>");
  }
}

সেরা ব্যবহারকারীর অভিজ্ঞতার সাথে সর্বাধিক মার্জিত সমাধানটি দ্রুত সম্পাদনা এবং পোস্ট সম্পাদনা পৃষ্ঠা উভয়ের জন্য এটি হ্যান্ডেল করতে জাভাস্ক্রিপ্ট ব্যবহার করবে। তারপরে সৌভাগ্যের জন্য আমি update_post_metadataফিল্টারটিতে কিছু যুক্ত করব (যা পুরোপুরি বৈশিষ্ট্যযুক্ত চিত্রটি প্রতিরোধের জন্য কাজ করে তবে এটি এজেএক্স দিয়ে চালানো হওয়ার পরে কোনও সতর্কতা দেয় না)।

অ্যাডমিন বিজ্ঞপ্তিগুলি প্রদর্শিত হবে না কারণ ওয়ার্ডপ্রেস পুনঃনির্দেশিত হয়, এবং তারপরেও দ্রুত সম্পাদনাতে প্রদর্শিত হবে না (আমার পদ্ধতিটি স্টাইলযুক্ত না হলেও দ্রুত সম্পাদনার বিষয়ে একটি সতর্কতা দেখায়)।


এটি পরীক্ষা করা হয়েছে? আমার কিছুক্ষণের মধ্যে এটি করার দরকার নেই, তবে এটি বুকমার্ক করে ভাল।
ট্র্যাভিস ফ্লেঞ্জ

হতে পারে সোমবারে আমি এটি আমাদের স্টেজিং সার্ভারে চালাতে পারি, তবে আমার কাছে উত্পাদনের সাথে চলমান এই ধরণের 99% মিল রয়েছে।
রায়ান টেলর

0

এটি প্রদর্শনের আগে সঠিকভাবে আকারের থাম্বনেইল রয়েছে তা নিশ্চিত করার একটি উপায় এখানে।

প্রথমে এই সহায়ক কার্যটি তৈরি করুন:

function has_post_thumbnail_of_size($width, $height) {
    $thumbnail_id = get_post_thumbnail_id();
    if( $thumbnail_id ) {
        $thumbnail_metadata = wp_get_attachment_metadata( $thumbnail_id );
        if( $thumbnail_metadata['height'] >= $height && $thumbnail_metadata['width'] >= $width ) {
            return true;
        }
    }
    return false;
}

তারপরে আপনি এখন পোস্ট থাম্বনেল প্রদর্শন করার আগে পরীক্ষা করতে পারেন:

if( has_post_thumbnail_of_size(640, 360) ) {
    the_post_thumbnail();
}

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

এটি পরীক্ষা করে নিতে হবে তবে আমি এটির একটি উপায় দেখতে পাচ্ছি যে এটি কীভাবে সম্পন্ন হতে পারে: যখনই কোনও আপলোড সফল হয়েছিল, ডাব্লুপি সংযুক্তি বিশদ ফর্মটি পরে প্রদর্শন করার জন্য অ্যাজ্যাক্সের মাধ্যমে সংযুক্তি ডেটা আনবে। এর অর্থ চিত্রটি একটি সংযুক্তি হিসাবে hasোকানো হয়েছে এবং মেটাডেটা উপলব্ধ। আইডিইএ: সংযুক্তি_ফিল্ডস_ টো_এডিট-এ সংযুক্তি দেওয়া যেতে পারে, যা যুক্তি হিসাবে সংযুক্তিটির বস্তু পায়, তারপরে মেটাডেটার উচ্চতা এবং প্রস্থটি পরীক্ষা করুন, যদি এই চেকটি ব্যর্থ হয় তবে সংযুক্তি বিশদটি ফর্মটি যথারীতি প্রদর্শন না করে, পরিবর্তে একটি ত্রুটি বার্তা দেখায় এবং সংযুক্তিটি তাত্ক্ষণিকভাবে মুছুন । শুধু একটি ধারণা।
ungestaltbar

@ ইউনজাস্টালবার, মনে হচ্ছে আপনার সঠিক ধারণা আছে। আমি কোনও কোডার নই, তাই আমি সম্প্রদায়ের করুণায় আছি।
ট্র্যাভিস প্লাফ্লানজ

0

এটি যা প্রয়োজন তা করবে :)

//Adding script to deligate Thumbnail Size
if ( function_exists( 'add_theme_support' ) ) {
  add_theme_support( 'post-thumbnails' );
    set_post_thumbnail_size( 960, 276, true ); // default Post Thumbnail dimensions   
}
//Set different Thumbnail Sizes for Later
if ( function_exists( 'add_image_size' ) ) { 
  add_image_size( 'large-thumb', 960, 276, true ); //(cropped)  
  add_image_size( 'medium-thumb', 605, 174, true ); //(cropped) 
  add_image_size( 'small-thumb', 288, 83, true ); //(cropped) 
  add_image_size( 'small-square', 100, 100, true ); //(cropped) 
}

<?php if ( has_post_thumbnail() ) {
      global $post; //I usually define this in the function that outputs this, fyi
      echo '<a href="' . get_permalink( $post->ID ) . '" title="' . esc_attr( $post->post_title ) . '">';
      echo get_the_post_thumbnail($thumbnail->ID, 'small-thumb', array( 'alt' => esc_attr( $post->post_title ), 'title' => esc_attr( $post->post_title ) ));
      echo '</a>'; 
      } else {

      $thumbnails = get_posts(array('numberposts'=>1,'orderby'=>'rand','meta_key' => '_thumbnail_id'));
      foreach ($thumbnails as $thumbnail) {
      echo '<a href="' . get_permalink( $post->ID ) . '" title="' . esc_attr( $post->post_title ) . '">';
      echo get_the_post_thumbnail($thumbnail->ID, 'small-thumb', array( 'alt' => esc_attr( $post->post_title ), 'title' => esc_attr( $post->post_title ) ));
      echo '</a>';
      }           
    }   
    ?>

এটি get_the_post_thumbnail ব্যবহার করছে যা আপনাকেও সহায়তা করতে পারে যাতে আপনার জন্য এমন একটি গুগল এফএন কোড তৈরি করার দরকার নেই যা ওয়ার্ডপ্রেস ইতিমধ্যে আপনার জন্য পরিচালনা করতে পারে, কেবল একটি চিন্তাভাবনা।

এটি $thumbnails = get_posts(array('numberposts'=>1,'orderby'=>'rand','meta_key' => '_thumbnail_id'));যদি উপস্থিত না থাকে তবে এলোমেলোভাবে ধরে ফেলতে এটি ব্যবহার করে এটি আপনাকে এগিয়ে যেতে সহায়তা করতে পারে।

এই বিটটি echo get_the_post_thumbnail($thumbnail->ID, 'small-thumb', array( 'alt' => esc_attr( $post->post_title ), 'title' => esc_attr( $post->post_title ) ));লক্ষ্য করুন যে 'small-thumb'এটি সেই অ্যাড_ইমেজ_সাইজ fn এর সাথে মিলে যায় আমরা কয়েকটি লাইন একসাথে রেখেছি। সুতরাং আপনি যদি আপনি বিকল্পভাবে add_image_size( 'small-square', 100, 100, true );কল করতে পারে 'small-square'

চিয়ার্স


জবাবের জন্য ধন্যবাদ. এটি আমার যা প্রয়োজন তা করে না। ওয়েবসাইটটি একটি এমএলবি বেসবল ওয়েবসাইট, সুতরাং অ্যালবার্ট পুজলসের একটি এলোমেলো ছবি প্রিন্স ফিল্ডার সম্পর্কে একটি নিবন্ধ যুক্ত করার জন্য কাজ করবে না, যদি আপনি আমার অর্থটি পান তবে ... এছাড়াও, যেমন আমি উপরে উল্লেখ করেছি, আমি ওয়াইপিক্যাকজ প্লাগইনটি এতে ব্যবহার করি ব্যবহারকারীদের একটি বৈশিষ্ট্যযুক্ত চিত্র যুক্ত করতে বাধ্য করুন। সুতরাং, সমস্যাটি তারা কোনও চিত্র যুক্ত করেছে কিনা তা নয়, পরিবর্তে আমি তাদের জোর করে 40৪০ প্রস্থ এবং ৩ 360০ লম্বা লম্বা একটি চিত্র যুক্ত করতে চাই।
ট্র্যাভিস প্লাফ্লানজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.