আমি ডেভিড-বিন্দার সাথে একমত - দুর্দান্ত প্রশ্ন! আমি এই সমস্যাটি বেশ কয়েকটি উপলক্ষে চালিয়েছি এবং একটি সমাধান নিয়ে এসেছি যা বেশ ভালভাবে কাজ করে। আমি যখন পাভলোস-বিজিমিসের পরামর্শ অনুসারে ক্লাসগুলি সহ চিত্রটি সন্নিবেশ করানোর জন্য একটি শর্টকোড যুক্ত করার মত ধারণা করি আমি পছন্দ করি না বলে আমি মনে করি না এটি ইমেজ সম্পাদনা পপআপে বিকল্পগুলি যুক্ত করার মতো বিষয়টি সত্যিই সুন্দরভাবে সমাধান করেছে (উদাহরণস্বরূপ আপনাকে সম্ভবত এটি করতে হবে আপনার শর্টকোডে চিত্রটি মুড়ে দিন যদি না আপনি ম্যানুয়ালি একটি চিত্র আইডি প্রবেশ করান)। এছাড়াও, আমার কিছু ক্লায়েন্টের জন্য এমনকি একটি শর্টকোডও খুব জটিল (কোনও ক্ষেত্রে আপনি এটি একটি টিনিএমসিই বাটন বন্ধের সাথে আবদ্ধ করতে পারেন)।
যাইহোক, আরও অ্যাডোও ছাড়াই - এখানে আমার পাঁচটি সেন্ট। আমি এই স্লাইডশো প্লাগইনটিতে এই সমাধানটি ব্যবহার করি যা আমাকে স্লাইডশো থেকে চিত্রটি অন্তর্ভুক্ত / বাদ দিতে এবং কিছু চিত্র মেটা ক্ষেত্রের সামগ্রীতে ওভারলে রঙের জন্য একটি পটভূমি রঙ সেট করার বিকল্প দেয়। মূলত এটি ইনপুট ক্ষেত্রগুলি যুক্ত করতে এবং ফর্ম ডেটা যথাক্রমে সংরক্ষণ করার জন্য attachment_fields_to_edit
এবং এটির জন্য hook attachment_fields_to_save
এই ডেটা সংযুক্তি পোস্টের জন্য স্ট্যান্ডার্ড পোস্ট মেটা হিসাবে উপলব্ধ হবে (যেমন আপনি যে চিত্রটি সম্পাদনা করছেন)। এটি get_post_meta()
যথারীতি যথারীতি ব্যবহার করে পুনরুদ্ধার করা সহজ since এবং আপনি করার জন্য একটি ফিল্টার যোগ করা উচিত wp_get_attachment_image_attributes
বা image_send_to_editor
যা আপনি যথাযথ বর্গ স্বয়ংক্রিয়ভাবে প্রতিটি সময় ইমেজ আউটপুট হচ্ছে যোগ করার জন্য অনুমতি দেবে।
আমি পাঠ্যতার জন্য কোডটি কিছুটা সংশোধন করেছি, যাতে কিছু অংশ অসম্পূর্ণ / ভুল হতে পারে।
/**
* Adds a form field for excluding images from slideshow
*
* @param array $form_fields Array of form fields
* @param object $post The post to show
* @return array Array of form fields
* @author Simon Fransson
**/
function hs_attachment_fields_to_edit($form_fields, $post = null)
{
$val = (boolean)get_post_meta($post->ID, SLIDESHOW_EXCLUDE_IMAGE_KEY, true);
$id = SLIDESHOW_EXCLUDE_IMAGE_KEY . "-" . $post->ID;
$markup = sprintf('<label for="%s"><input type="checkbox" class="checkbox" id="%s" name="attachments[%s][%s]" value="true" %s /> %s</label>', $id, $id, $post->ID, SLIDESHOW_EXCLUDE_IMAGE_KEY, checked($val, true, false), __('Exclude from slideshow', 'slideshow'));
$form_field = array(
'label' => __('Slideshow', 'slideshow'),
'input' => 'html',
'html' => $markup,
'value' => $val,
'helps' => __('Excludes the image from slideshows.', 'slideshow'),
);
$form_fields[SLIDESHOW_EXCLUDE_IMAGE_KEY] = $form_field; // See update notice below code block!
return $form_fields;
}
add_filter('attachment_fields_to_edit', 'hs_attachment_fields_to_edit', 10, 2);
/**
* Save the images exclude status meta value when saving attachment data
*
* @param object $post Post object
* @param array $attachment Field values
* @return object Post object
* @author Simon Fransson
**/
function hs_attachment_fields_to_save($post, $attachment = null)
{
update_post_meta($post['ID'], SLIDESHOW_EXCLUDE_IMAGE_KEY, intval(isset($attachment[SLIDESHOW_EXCLUDE_IMAGE_KEY])));
return $post;
}
add_filter('attachment_fields_to_save', 'hs_attachment_fields_to_save', 10, 2);
/**
* Generate metadata for newly uploaded attachment.
* This is here simply because we are dealing with a boolean,
* which means that for SQL related reasons a value NEEDS to
* exist even when noting has been specified in the options
*
* @param array $metadata Array of meta data
* @param int $attachment_id ID of attachment post
* @return array Array of meta data
* @author Simon Fransson
**/
function hs_generate_attachment_metadata($metadata, $attachment_id = null)
{
$exclude = intval(get_post_meta($attachment_id, SLIDESHOW_EXCLUDE_IMAGE_KEY, true));
update_post_meta($attachment_id, SLIDESHOW_EXCLUDE_IMAGE_KEY, $exclude);
return $metadata;
}
add_filter('wp_generate_attachment_metadata', 'hs_generate_attachment_metadata', 10, 2);
আপডেট : আমি যে প্রকল্পে কাজ করছি তাতে বয়লারপ্লেট হিসাবে এটি ব্যবহার করার জন্য আমি এই কোডটি অনুলিপি করেছি। আপনি সম্ভবত কোডটি দেখে বলতে পারেন যে আমি আমার পোস্ট মেটা কীগুলি সংজ্ঞায়িত ধ্রুবকগুলিতে সঞ্চয় করতে চাই। আমি যখন এটি করি তখন আমি _
মেটা ফিল্ডস এডিটরটিতে প্রদর্শিত হওয়া থেকে রোধ করার জন্য সর্বদা মানটির সাথে অগ্রাহ্য করি তবে এই অনুশীলনটি কিছু সমস্যা হতে পারে attachment_fields_to_save
। $form_fields
অ্যারের কীগুলি শুরু_
হতে পারে না , সুতরাং অ্যারে এবং মেটা মানগুলির জন্য বিভিন্ন কী ব্যবহার করতে সাবধান হন বা সংযুক্তি ক্ষেত্রগুলির সাথে ডিল করার সময় কোনও আন্ডারস্কোরগুলি ছাঁটাবেন। যেহেতু SLIDESHOW_EXCLUDE_IMAGE_KEY
আমার উদাহরণে এটিও সংজ্ঞায়িত করা হয়নি কোডটি অনুলিপি করার সময় এটি সম্ভবত কোনও বড় বিষয় নয়, তবে আমি ভেবেছিলাম যে যাইহোক এটি উল্লেখ করব। এটি বের করতে আমার কিছুটা সময় লেগেছিল (এবং দ্বিতীয়বারের মতো, এটি)।