জিমেইলে প্রিভিউ প্যান এক্টিভেশন

জিমেইলের জেনারেল বা নরমাল ভিউতে একটি ইমেল পড়তে হলে সেই ইমেইলে ক্লিক করে ওপেন করতে হয় তারপর পড়তে হয়। আবার ঐ ইমেইলের ভিতর থাকা অবস্থায় আরেকটি ইমেইল পড়ার প্রয়োজন হলে, প্রথমে সেখান থেকে ব্যাক করতে হয় এবং পুনরায় পূর্বের পদ্ধতি অনুসরণ করতে হয় বা পূর্বের স্টেপস ফলো করে প্রয়োজনীয় ইমেইলটি পড়তে হয়। কিন্তু আমরা চাইলে সহজেই এই বিরক্তিকর বিষয়টি থেকে মুক্তি পেতে পারি জিমেইলেই স্প্লিট প্যান মোড বা প্রিভিউ প্যান যুক্ত করে। প্রিভিও প্যান (Preview Pan) এটি জিমেইলের একটি পরীক্ষামূলক ফিচার। পরীক্ষামূলক হলেও ব্যক্তিগতভাবে আমি এখনো এর কোন ত্রুটি খুজে পাইনি। আমার কাছে এই ফিচারটি দারুন লাগে 🙂

জিমেইলের জেনারেল ভিউ বা নরমাল ভিউ

স্প্লিট প্যান মোড বা প্রিভিউ প্যান যুক্ত করা:

জিমেইল ল্যাবস সেটিংস প্যানেল

সেটিংস মেনু থেকে সেটিংসে (Settings) ক্লিক করতে হবে। এরপর সেটিংস পেজ ওপেন হলে সেখান থেকে ল্যাবস (Labs) ট্যাবে ক্লিক করতে হবে। ল্যাবস পেজে বিভিন্ন এক্সপেরিমেন্টাল ফিচারের একটি লিস্ট পাওয়া যাবে। লিস্ট থেকে প্রিভিও প্যান (Preview Pan) ফিচারটি খুঁজে এনাবল (Enable) করে সেভ চেঞ্জেস (Save Changes) বাটনে ক্লিক করলেই প্রিভিও প্যান জিমেইলের ইমেইল উন্ডোতে যুক্ত হয়ে যাবে। প্রিভিও প্যান (Preview Pan) ফিচারটি যুক্ত হলে সেটিংস বাটনের পাশে নতুন আরেকটি বাটন দেখা যাবে যেখান থেকে আপনি চাইলে সহজেই ভিউ কন্ট্রোল করতে পারবেন।

স্প্লিট প্যান মোড বা প্রিভিউ প্যান:

প্রিভিউ প্যান ভার্টিক্যাল ভিউ
প্রিভিউ প্যান হরিজন্টাল ভিউ

 

— ধন্যবাদ 🙂

আমিও দূরে

হয়তো সাধে নয়, হয়তো বিষাদে
স্বপ্ন গুলো উড়িয়ে দেবো
সকল বাঁধন ছিড়ে
বলেছিলাম তোমায় আমি
বলেছি সে কথা
দিয়েছো তুমি হৃদয় জুড়ে
দিয়েছো দুখের পোকা
খাচ্ছে আমায় খাচ্ছে ধীরে
যাচ্ছি অনেক দূর
তবুও তোমায় ভালোবাসি
কর যতই দূর

স্বপ্ন গুলো দিলাম ছেড়ে
দুঃখ নিলাম কিনে
হয়ত তুমি আসবে ভেবে
অষ্ট প্রহর গুনে
নীল আকাশে ঘুড়ি ওড়ে
নেইতো সুতোর বাঁধন
তবুও তোমায় ভালোবাসি
ছেড়ে তুমি যখন

কাঁচের চুড়ি ভাঙবে তুমি
কাঁটবে নিজের হাত
আমার স্বপ্ন হারিয়ে যাবে
তবুও কাটবে রাত
ভোরের তারা দিশেহারা
হারিয়ে সূর্যালোকে
তবুও তোমায় ভালোবাসি
যখন তুমি দূরে

— প্রকাশকাল: নভেম্বর ২৮, ২০১৪ (ফেসবুক)

ছবি ক্রেডিট:
Jason Rosewell

উকমার্স প্রোডাক্ট মেটাবক্স এবং মেটাডাটা

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

কিন্তু আজকে আমরা কোন মেটাবক্স ফের্মওয়ার্ক শিখবো না। কারণ উকমার্সে মেটাবক্স আর মেটাডাটা নিয়ে কাজ করাটা বেশ সহজ এবং এর জন্য সাধারণত কোন ফ্রেমওয়ার্কের প্রয়োজন হয়না। উকমার্সের নিজস্ব সুন্দর একটি মেটাবক্স সিস্টেম আছে। যেখানে মেটাফিল্ড গুলি ট্যাব আকারে গ্রুপ করে সাজানো থাকে। আমরা সহজেই নির্দিষ্ট এ্যাকশন হুক ব্যবহার করে সেসব ট্যাবে আমাদের প্রয়োজনীয় মেটাফিল্ড যুক্ত করতে পারি। আবার চাইলে সম্পূর্ণ নতুন একটি ট্যাবও বানিয়ে ফেলতে পারি। আজকে আমরা Awesome Tab নামে নতুন একটি ট্যাব বানিয়ে সেখানে মেটাফিল্ড যুক্ত করা শিখব। এখানে ব্যবহৃত সকল কোড আমরা functions.php যুক্ত করে কাজ করব।

ট্যাব আকারে সাজানো উকমার্স মেটাবক্স

Awesome Tab এ্যাড করা:

ট্যাব এ্যাড করার জন্য woocommerce_product_data_tabs ফিল্টার হুকে নতুন ট্যাবের কনফিগারেশন এ্যারে বর্তমান ট্যাবগুলির কনফিগারেশনের সাথে মার্জ করে পাঠাতে হয়। ফিল্টার হুকটি শুধুমাত্র একটি আর্গুমেন্ট $tabs একসেপ্ট করে, যা হল বর্তমান ট্যাবগুলির কনফিগারেশন এ্যারে। ট্যাবের কনফিগারেশন হিসেবে নিচের ডাটাগুলি পাস করতে হয়ঃ

  • label – ট্যাবের লেবেল, আমাদের ট্যাবের ক্ষেত্রে যা Awesome Tab
  • target – ট্যাবের টার্গেট হিসেবে ট্যাব প্যানেলের আইডি পাস করতে হয়। আমাদের Awesome Tab এর ক্ষেত্রে যা awesome-tab
  • class – ট্যাবের জন্য এডিশনাল কোন ক্লাস দিতে চাইলে এ্যারে ইলিমেন্ট হিসেব দিতে হয়।
  • priority – প্রায়োরিটির উপর নির্ভর করবে ট্যাবের প্লেসমেন্ট বা ট্যাবটি কোথায় দেখাবে। বেশি হলে নিচের দিকে আর কম হলে উপরের দিকে দেখাবে।

functions.php তে কোড গুলি এ্যাড করার পর এ্যাড কিংবা এডিট প্রোডাক্ট পেজে গেলে আমরা নিচের মত Awesome Tab নামে নতুন একটি ফিল্ড ছাড়া ট্যাব দেখতে পাবো।

Awesome Tab এ ফিল্ড এ্যাড করা:

ট্যাবে ফিল্ড এ্যাড করার জন্য woocommerce_product_data_panels এ্যাকশন হুকে নিচের মত করে কোড লিখতে হবে। এ্যাকশন হুকটি কোনো আর্গুমেন্ট একসেপ্ট করেনা। আমরা এখানে woocommerce_wp_text_input ফাংশনটি ব্যবহার করেছি যা উকমার্সের নিজস্ব ফাংশন। এটি দিয়ে খুব সহজেই টেক্সট ফিল্ড বানানো যায়। এরকম আরো কিছু ইউটিলিটি ফাংশন রয়েছে যা দিয়ে খুব সহজেই ইনপুট ফিল্ড বানানো যায়। আমরা অন্য কোন লেখায় সেসব শিখব।

functions.php তে কোড গুলি এ্যাড করার পর এ্যাড কিংবা এডিট প্রোডাক্ট পেজে গেলে Awesome Tab দুটি টেক্সট ফিল্ড দেখতে পাবো।

Awesome Tab এর ডাটা সেভ করা:

ট্যাবের ডাটা সেভ করার করা জন্য woocommerce_admin_process_product_object এ্যাকশন হুকে ডাটা সেভ করার ফাংশনালিটি লিখতে হবে। এই হুকটি Product Object $product আর্গুমেন্ট হিসেবে একসেপ্ট করে। নিচের কোডে সেভ করার ফাংশনালিটি লেখা আছে।

সবগুলি কোড একসাথে পেতে চাইলে ক্লিক করুন

— ধন্যবাদ 🙂

ফাঁকিবাজি উইথ ওয়ার্ডপ্রেস থিম আপডেট নোটিফিকেশন

এটি একটি এক্সট্রিম লেভেলের সমাধান তাই এড়িয়ে চলুন। সহজ সমাধান হিসেবে থিমের ডিরেক্টরি/ফোল্ডারের নাম পরিবর্তন করে দিতে পারেন। যেমন – আপনার থিমের ডিরেক্টরির নাম যদি হয় awesome-theme আপনি পরিবর্তন করে super-awesome-theme দিয়ে দিতে পারেন।

কিছুদিন আগে একটা থিম ডেভেলপমেন্টের কাজ করছিলাম কিন্তু অানফরচুনেটলি ওয়ার্ডপ্রেস থিম ডিরেক্টরির একটি থিমের সাথে নাম হুবহু মিলে যায়। আর এতেই ঘটে বিপত্তি! থিম ডিরেক্টরির থিমটির ভার্সন ছিল ১.৪ আর আমি যেটি ডেভেলপ করছিলাম সেটার ভার্সন ছিল ১.০, আর একারণেই সবসময় আপডেট নোটিফিকেশন পাচ্ছিলাম। থিম ডেভেলপমেন্টের কাজ যে পরিমাণ হয়েছিল তাতে থিমের নাম পরিবর্তন করার চাইতে ওয়ার্ডপ্রেসের থিম আপডেট নোটিফিকেশন সিস্টেমকে ফাঁকি দেয়াটাই সহজ মনে হয়েছে। আর ক্লায়েন্টেরও ফাঁকি দেয়ার বিষয়ে কোন আপত্তি ছিল না। আমায় আর রুখবে কে! 😀

থিম আপডেট সিস্টেমকে ফাঁকি দেয়াটা কঠিন কোন কাজ ছিলনা। শুধু মাত্র wp_prepare_themes_for_js ফিল্টার হুকে সঠিক থিমটা সিলেক্ট করে FALSE পাঠিয়ে দিয়েছি ঠিক নিচের কোডের মত করে, ব্যাস এতেই কাজ হয়ে গেছে।

— ধন্যবাদ 🙂

উকমার্সে প্রোডাক্ট টাইপ অপশনস ডিফল্ট সেট করা

বর্তমানে একটি ইকমার্স সাইটের কাজ করছি, যেখানে ক্লায়েন্ট তার ডিজিটাল প্রোডাক্ট সেল করবে। ক্লায়েন্ট EDD ব্যবহারে ইচ্ছুক নয় কারণ EDD -র বেশির ভাগ এ্যাডঅন (Addon) প্রিমিয়াম। এজন্য ক্লায়েন্টের একমাত্র পছন্দ হল উকমার্স (WooCommerce)।

যেহেতু ক্লায়েন্টের সব প্রোডাক্টই হল ডিজিটাল তাই উকমার্সের সেটিংস অনুযায়ী সব প্রোডাক্ট হবে ভার্চুয়াল (Virtual) এবং ডাউনলোডেবল (Downloadable)। এবং ক্লায়েন্ট শুধুমাত্র Simple টাইপের প্রোডাক্ট এন্ট্রি দিবে। এখন সমস্যা হল প্রতিবার নতুন প্রোডাক্ট এন্ট্রি দেবার সময় ভার্চুয়াল এবং ডাউনলোডেবল চেকবক্স মার্ক (Checked) করে দিতে হবে। এর সমাধান চিন্তা করতে গিয়ে মনে হল নিশ্চয়ই এর জন্য কোন না কোন ফিল্টার হুক আছে। উকমার্সের কোর ফাইলে সার্চ করেই পেয়ে গেলাম কাংখিত সেই ফিল্টার হুকটি। নিচে কোড স্যাম্পলঃ

— ধন্যবাদ 🙂