Wp_get_attachment_image থেকে মাত্রা সরান


10

Wp_get_attachment_image ব্যবহার করার সময় আমার সংযুক্তি চিত্রগুলি থেকে প্রস্থ এবং উচ্চতা সরাতে আমার কিছু সমস্যা হচ্ছে। এটি আমি চিত্রটি প্রদর্শন করতে ব্যবহার করছি

 <?php echo $image = wp_get_attachment_image( $entry['slide_image_id'], true, 'full'); ?>

এটি উত্স কোডটি কেমন দেখাচ্ছে

 <img width="150" height="108" src="http://website:8888/wp-content/uploads/2015/12/cupcakes-and-cosmetics-logo.png" class="attachment-1 size-1" alt="cupcakes-and-cosmetics-logo" />

আমি এটির মতো প্রদর্শন করতে চাই

 <img src="http://website:8888/wp-content/uploads/2015/12/cupcakes-and-cosmetics-logo.png" class="attachment-1 size-1" alt="cupcakes-and-cosmetics-logo" />

চিত্রটি স্লাইড_আইমেজ_আইডির একটি আইডি সহ একটি এন্ট্রি সহ একটি পুনরাবৃত্তযোগ্য ফাইল ক্ষেত্র থেকে টানা হচ্ছে। আমি চারদিকে ঘুরে দেখছি এবং wp_get_attachment_image_url ব্যবহার করার জন্য বিজ্ঞপ্তি পেয়েছি তবে আমি যখন আমার উপরের কোডটি ব্যবহার করি তখন চিত্রটি প্রদর্শিত হয় না। আমি কি কিছু ভুল করছি?

 <?php echo $image = wp_get_attachment_image_url( $entry['slide_image_id'], true, 'full'); ?>

পার্শ্ব নোট: $ এন্ট্রি ['স্লাইড_মেজ_আইডি'] হ'ল এটি আমার পুনরাবৃত্তযোগ্য ফাইল ক্ষেত্রে কল করতে ব্যবহৃত হচ্ছে।


wp_get_attachment_image_url()একটি URL প্রদান করে - কোনও চিত্র উপাদান নয়।
বসক

আমি যা খুঁজছি তার মধ্যে সর্বোত্তম সমাধানটি কী হবে @ বাস্কো
user3756781

বাহ, এটা কতটা বিরক্তিকর যে img আউটপুটটির প্রতিটি বৈশিষ্ট্য add_filter('wp_get_attachment_image_attributes' ...কেবল উচ্চতা এবং প্রস্থকে হার্ড কোডিং ছাড়া ফিল্টারযোগ্য ।
স্কয়ারকাণ্ডি

উত্তর:


9

উভয় জন্য আর্গুমেন্ট wp_get_attachment_image_url()এবং wp_get_attachment_image()ভুল আদেশ হয় - বিস্তারিত জানার জন্য লিঙ্ক ডকুমেন্টেশন চেক করুন। অতিরিক্ত হিসাবে, wp_get_attachment_image_url()একটি URL প্রদান করে - কোনও আসল চিত্রের উপাদান নয়।

সরানো হচ্ছে widthএবং heightথেকে বৈশিষ্ট্যাবলী <img>উপাদান অজ্ঞ: যদি পৃষ্ঠার লেআউট ইমেজ আকার দ্বারা প্রভাবিত কোন ভাবেই হয়, লেআউট will "সামান্য ত্রুটি" যত তাড়াতাড়ি সিএসএস যা চিত্রের মাত্রা নির্দিষ্ট করে, বা ইমেজ নিজেই লোড হিসাবে।

দুর্ভাগ্যক্রমে, wp_get_attachment_image()ফাংশনটি বর্তমানে (ওয়ার্ডপ্রেস ৪.৪.১ হিসাবে) আউটপুট widthএবং height <img>বৈশিষ্ট্যগুলি ( টিকিট # 14110 দেখুন ) কঠোর কোডে রয়েছে , সুতরাং আপনাকে নিজেরাই ছবিটির মার্কআপ তৈরি করতে হবে। wp_get_attachment_image()এর উত্স থেকে সংকেত গ্রহণ করে এটি করা যেতে পারে :

<?php
  $attachment = get_post( $entry['slide_image_id'] );

  if( $attachment ) {
    $img_size_class = 'full';
    $img_atts = array(
      'src'   => wp_get_attachment_image_url( $entry['slide_image_id'], $img_size_class, false ),
      'class' => 'attachment-' . $img_size_class . ' size-' . $img_size_class,
      'alt'   => trim(strip_tags( get_post_meta( $entry['slide_image_id'], '_wp_attachment_image_alt', true) ) )
    );

    //If an 'alt' attribute was not specified, try to create one from attachment post data
    if( empty( $img_atts[ 'alt' ] ) )
      $img_atts[ 'alt' ] = trim(strip_tags( $attachment->post_excerpt ));
    if( empty( $img_atts[ 'alt' ] ) )
      $img_atts[ 'alt' ] = trim(strip_tags( $attachment->post_title ));

    $img_atts = apply_filters( 'wp_get_attachment_image_attributes', $img_atts, $attachment, $img_size_class );

    echo( '<img ' );
    foreach( $img_atts as $name => $value ) {
      echo( $name . '="' . $value . '" ';
    }
    echo( '/>' );
  }
?>

আপনি আমাকে যে লিঙ্কটি পাঠিয়েছেন আমি তা অনুসরণ করেছি এবং সমস্যা সমাধানের পাশাপাশি আপনার সমাধানটি ব্যবহার করে ছবিটি তৈরি করতে সক্ষম হয়েছি। কেবলমাত্র সমস্যাটিই হ'ল ওয়েট ট্যাগের সাথে কীভাবে হয়। আপনি আমাকে যে লিঙ্কটি প্রেরণ করেছিলেন তার সাথে একটি ট্যাগ ট্যাগ উত্পন্ন হয় না এবং এটি আপনার সাথে স্থির হয় (এই কারণেই আমি ভেবেছিলাম wp_get_attachment_image সেরা বিকল্প হবে)। আপনি যে উদাহরণটি প্রদর্শন করছেন তার সাথে আমি কীভাবে একটি ট্যাগ ট্যাগ তৈরি করব? @ বসকো
ব্যবহারকারী3756781

বিষয়টি আমার প্রত্যাশার চেয়ে জটিল হয়ে উঠল। <img>থেকে বৈশিষ্ট্য প্রজন্মের বিটগুলি অন্তর্ভুক্ত করার জন্য আমার উত্তর আপডেট করেছে wp_get_attachment_image()- যদিও আমি প্রতিক্রিয়াশীল চিত্রগুলির জন্য ব্যবহৃত অংশগুলি srcsetএবং sizesঅংশগুলি রেখে দিয়েছি । এগুলি যদি প্রয়োজন হয় get_sizeless_attachment_image()তবে একটি ফাংশন তৈরি করা বাঞ্ছনীয়।
বসক

ধন্যবাদ এই নিখুঁত কাজ। একটি মিস অক্ষর প্রতিধ্বনির প্রতি কোডের মধ্যে একটি ত্রুটি ছিল ($ নাম। '= "' $ মান। '"'; প্রতিধ্বনি হওয়া উচিত ($ নাম। '= "' $ মান। '"') ;. আপনার সাহায্যের জন্য আপনাকে আবার ধন্যবাদ @ বাস্কো
ইউজার 3756781

12

কার্যসংক্রান্ত

আমি কিছু কোর ডিগিং / টেস্টিং করেছি এবং wp_constrain_dimensionsফিল্টারটির মাধ্যমে একটি কাজ খুঁজে পেয়েছি :

// Add filter to empty the height/width array
add_filter( 'wp_constrain_dimensions', '__return_empty_array' );
// Display image html
echo wp_get_attachment_image( $entry['slide_image_id'], 'full', true );
// Remove filter again
remove_filter( 'wp_constrain_dimensions', '__return_empty_array' );

এটি আমাদের রেজি-এক্স ক্যানসগুলি না পেয়ে, উত্পন্ন চিত্রের এইচটিএমএল থেকে উচ্চতা এবং প্রস্থের বৈশিষ্ট্যগুলি সরাতে দেয় বলে মনে হয় wp_get_attachment_image()। আমরা ব্যবহার করতে পারে wp_get_attachment_image_srcসরানোর জন্য একটি একই ভাবে ফিল্টার প্রস্থ / উচ্চতা কিন্তু রাখা URL

মন্তব্য

এই workaround পাশাপাশি বৈশিষ্ট্য srcsetএবং sizesবৈশিষ্ট্য মুছে ফেলা হবে । তবে চতুর্থ ইনপুট আর্গুমেন্টের মাধ্যমে srcset এবং আকারের বৈশিষ্ট্যগুলি সেট করাও সম্ভব $attr

@ বোসকো দ্বারা উল্লিখিত হিসাবে, আপনি আইকন এবং আকার ইনপুট আর্গুমেন্টগুলিকে স্যুইচ করেছেন :

echo wp_get_attachment_image( $entry['slide_image_id'], true, 'full' );

পরিবর্তে এটি ব্যবহার করুন:

echo wp_get_attachment_image( $entry['slide_image_id'], 'full', true );

1

আমি কেবল এইটির জন্য সিএসএস ব্যবহার করেছি। এটি সমস্ত দৃশ্যে কাজ করে না, তবে প্রায়শই এটি যথেষ্ট হবে। আসুন একটি 300px এক্স 300px চিত্র নিতে:

max-height: 300px;
max-width: 300px;
width: auto;

এটি দৈর্ঘ্যের উচ্চতা অনুপাত না হারিয়ে চিত্রের মাত্রাগুলি সীমাবদ্ধ করে। অন্যথায় আপনি REGEX ব্যবহার করতে পারেন:

$html = preg_replace(array('/width="[^"]*"/', '/height="[^"]*"/'), '', $html);

এগুলি ছিল কিছু বিকল্প। শুভকামনা।

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