ওয়ার্ডপ্রেসের Walker ক্লাসের কাজ ও ধারনা

WordPress Walker Class

মেনু, সাব মেনু, বা ক্যাটাগরি, সাব ক্যাটাগরি স্ট্যাইলে ডাটা দেখানো কে আমরা ট্রি মত ডাটা দেখানো বলি, যেখানে প্যারেন্ট আইটেমের আন্ডারে সাব আইটেম,  এর আন্ডারে আবার সাব আইটেম এভাবে দেখানো যায়,

ওয়ার্ডপ্রেসে এই ধরনের কাজ গুলি সহজে করার জন্যে walker নামে একটা ক্লাস আছে। এটি একটি  এবসট্র্যাকট  ক্লাস,  মানে সরাসরি এই ক্লাসটা আপনি ব্যবহার করতে পারবেন না কিন্তু এই ক্লাসকে এক্সটেন্ড করে এর মেথড গুলি ব্যবহার করে খুব সহজেই আপনি ড্রপডাউন মেনু, বা ড্রপডাউন সিলেক্ট বক্স ইত্যাদি বানাতে পারবেন 🙂

সাধারণত এই ধরনের ডাটা স্ট্রাকচারে আইডি আর প্যারেন্ট আইডি অবশ্যই থাকে যাতে কোন আইটেম কোন আইটেমের আন্ডারে তা ডিফাইন করা যায়, আর কোন আইটেম যদি কোন আইটেম এর আন্ডারে না থাকে তবে তার প্যারেন্ট আইডি থাকে ০।

যেমন ধরুনঃ

  1. আইটেম ১, যার আইডি ১, আর প্যারেন্ট আইডি ০
    1. আইটেম ১ যার আইডি ৪ কিন্তু প্যারেন্ট আইডি ১, মানে এটা  আইটেম ১ এর চাইল্ড আইটেম
    2. আইটেম ২ যার আইডি ৫ কিন্তু প্যারেন্ট আইডি ১, মানে এটাও আইটেম ১ এর চাইল্ড আইটেম
  2. আইটেম ২, যার আইডি ২, আর প্যারেন্ট ০
  3. আইটেম ৩, যার আইডি ৩, আর প্যারেন্ট ০

ডাটাবেজ থেকে হোক বা আপনার কাস্টম এরে (array) থেকে হোক এই ধরনের ডাটা গুলি কে আপনি এই walker ক্লাস দিয়ে সহজেই ট্রি স্ট্রাকচার করে দেখাতে পারবেন,

এরে (array) দিয়ে করতে গেলে আপনার ডাটা স্ট্রাকচার অবশ্যই আইডি, প্যারেন্ট আইডি এভাবে সাজানো থাকতে হবে 🙂

উপরের উদাহরণের  walker এর আউটপুট হবে এমনঃ

চলুন আমরা একটা এরে (array) ব্যবহার করে দেখিঃ

এই walker ক্লাসটা কাজ করার জন্যে আপনার প্রতিটি আইটেম অবজেক্ট হিসেবে থাকতে হবে যেমনঃ

আপনাকে walker ক্লাসটা ব্যবহার করতে হবে এভাবেঃ

এখানে Walker_Simple_Example  ক্লাস টার প্যারেন্ট ক্লাস walker। আমরা শুধু  walker ক্লাসের মেথড গুলি ব্যবহার করেছি,

এখানে $db_fields  প্রপার্টিতে তে আমরা অবজেক্ট এর আইডি, আর প্যারেন্ট আইডি কোনটি তা বলে দিয়েছি, এটা আপনাকে অবশ্যই বলে দিতে হবে 🙂

আর আউটপুট দেখবেনঃ

পুরো কোডটি হবে এমনঃ

 

আপনি যদি কোন কাস্টম ট্যাক্সনমি নিয়ে কাজ করতে চান, ধরুন আমরা product_cat  এই কাস্টম ট্যাক্সনমির walker বানাব তাহলে আপনাকে $db_fields এর parent  কি এর ভ্যালু parent  আর id  কি এর ভ্যালু term_id  দিতে হবে, কারণ এখানে ট্যাক্সনমির লিস্ট টা নিতে আমরা get_categories()   ফাংশন টা ব্যাবহার করব, যেখানে id   নেম term_id  আর parent  হল parent

get_categories()   ফাংশনটার আউটপুট ডাম্পিং করলেই আপনি দেখবেন ব্যাপারটা, তো আমাদের ক্লাস টা আগের সবকিছু ঠিক রেখে দেখতে হবেঃ

আর আউটপুট দেখাবেনঃ

walker ক্লাসের যে মেথড দিয়ে আপনি আপনার html এর আউটপুট চেঞ্জ করতে পারেনঃ

start_lvl  মেথড দিয়ে ট্রি লেভেল শুরু করার সময়

end_lvl মেথড দিয়ে লেভেল শেষ করার সময়,

আর start_el, end_el  প্রতিটা আইটেমের html এলিমেন্ট শুরু শেষ করার স্ট্যাইল বলে দিতে পারবেন।

কোন প্রকার প্লাগিন ছাড়াই ওয়ার্ডপ্রেস কমেন্ট স্প্যাম থেকে বাঁচার খুবই সহজ উপায়

ওয়ার্ডপ্রেস কমেন্ট স্প্যাম রোধে অনেক প্লাগিন আছে যা থেকে কমেন্টে স্প্যামিং রোধ করা যায়, কিন্তু আমরা চাইলে খুব সহজেই কোন প্রকার প্লাগিন ব্যবহার ছাড়াই ওয়ার্ডপ্রেস কমেন্ট স্প্যামিং রোধ করতে পারি 🙂

সাধারণত কমেন্ট স্প্যামিং টুল গুলো কোন একটা সাইট টার্গেট করে / কোন প্রকার টার্গেট ছাড়াই ওয়ার্ডপ্রেস কমেন্ট ফিল্ড গুলো পূরণ করে পাঠিয়ে দেয়, এমন কি সার্ভার সাইডে কমেন্ট প্রটেকশনের জন্যে কোন ফিল্ড দেওয়া থাকলে ও কমেন্ট বট গুলো ওই ফিল্ডে বুঝে ডাটা পূরণ করে পাঠিয়ে দিতে পারে ।

এই জন্যে কমেন্ট স্প্যামিং রোধক ফরম ফিল্ড ব্যবহারের জন্যে আমরা জাভাস্ক্রিপ্ট ব্যবহার করব 🙂 চলুন কোডে চলে যাই।

প্রথমে আপনার ওয়ার্ডপ্রেস থিমের জাভাস্ক্রিপ্ট ফাইলে এই কোড  টা ব্যবহার করুন যাতে কমেন্ট ফরম সাবমিটের সাথে সাথে কমেন্ট ফরমে একটা ইনপুট ফিল্ড যোগ হয়ে যায়ঃ

এবার   functions.php ফাইলে preprocess_comment  ফিল্টারে আমাদের দেওয়া ইনপুট ফিল্ডের ডাটা আছে কিনা চেক করে নিব

ব্যাপারটা খুবই সাধারণ, কিন্তু যাদের জাভাস্ক্রিপ্ট ডিজেবল করা থাকে বা থিমে জাভাস্ক্রিপ্টে এরর এর জন্যে কমেন্ট ফরমে ইনপুট এপেন্ড হবে না যার কারণে কমেন্ট সাবমিট হবে না এবং এরর দেখতে পাবে।

স্প্যামিং বট বা cURL দিয়ে কেউ যদি কমেন্ট স্প্যামিং করার চেষ্টা করে তবে তা রোধ হবে 🙂

ওয়ার্ডপ্রেস গ্যালারীতে HTML5 মার্কআপ সাপোর্ট

সাধারণত ওয়ার্ডপ্রেস গ্যালারীর html স্ট্রাকচার টা dl, dt, dd মানে ডেফিনেশন লিস্ট দিয়ে করা থাকে সাথে গ্যালারীর ডিফল্ট স্টাইল ও করা থাকে, আমরা গ্যালারীতে নিজেদের স্টাইল এপ্লাই করার জন্যে  use_default_gallery_style ফিল্টারে false রিটার্ন করি, এবং নিজেদের css লিখে থাকি কিন্তু ওয়ার্ডপ্রেসের ৩.৯ ভার্সন থেকে html5 মার্কআপ সাপোর্ট দেওয়া হয়েছে figure, div, ও figcaption দিয়ে  🙂

এজন্যে থিম সাপোর্টে html5 এ  gallery যোগ করে দিতে হবে।

মজার ব্যাপার হল আপনার থিমে html5 এ গ্যালারী সাপোর্ট দিলে আপনাকে আবার use_default_gallery_style ফিল্টারে false রিটার্ন করতে হবে না, মানে গ্যালারীর জন্যে ওয়ার্ডপ্রেস যে ডিফল্ট স্টাইল যোগ করে html5 গ্যালারী সাপোর্টে ওটা করে না।

এই চেঞ্জলগটা দেখলে অনেকটা ক্লিয়ার হবে https://core.trac.wordpress.org/changeset/27396 লাইন ৮৮৮.

আশা করি টিপস টা সবার কাজে লাগবে  🙂

 

ব্রাউজারের ক্যাশিং বাড়িয়ে দিয়ে ওয়ার্ডপ্রেস সাইট দ্রুত লোড করুন

leverage-browser-cache

কোন ওয়েবসাইটের পেজ স্পিড গুগল পেজ স্পিড এনালাইজার দিয়ে চেক করলে “Leverage browser caching” বা ব্রাউজারে ক্যাশিং করে রাখার সুবিধার কথা বলে।

আজ আমরা দেখব কোন ওয়ার্ডপ্রেস সাইটের স্ট্যাটিক কন্টেন্ট যেমন ইমেজ, জাভাস্ক্রিপ্ট, সি, এস, এস ইত্যাদি  ব্রাউজারে ক্যাশিং করে রেখে কিভাবে কোন পেজের লোডিং স্পিড বাড়ানো যায় 🙂

আপনার সার্ভার যদি এপাচি সার্ভার হয় এবং “mod_expires” ডাইরেক্টিভ এনাবল করা থাকে তবে আপনি Expires HTTP header এর ম্যাক্সিমাম টাইম সেট করে দিয়ে কাজ টা সেরে ফেলতে পারেন।

এই টাইম টা আমরা .htaccess ফাইলে সেট করে দিব আমাদের সাইটে ব্যবহার করা বিভিন্ন কন্টেন্ট এর টাইপ অনুযায়ী এভাবেঃ

কিন্তু ধরুন কোন কারণে আপনি বা আপনার ক্লায়েন্ট যদি প্লাগিন থেকে ওয়ার্ডপ্রেসের রিরাইট রুল ফ্লাশ করে বা পারমালিঙ্ক সেটিং অফ করে দেয় থেকে তখন কিন্তু এই কন্টেন্ট মুছে যেতে পারে এই জন্যে আপনাকে এই সেটিংসটা ওয়ার্ডপ্রেসের .htaccess ফাইলের # BEGIN WordPress এবং # END WordPress এই comment wrapper এর বাইরে রাখতে হবে, তো ব্রাউজার ক্যাশ বাড়িয়ে নিন  🙂

সূচীপত্র

১. ওয়ার্ডপ্রেস ডেভেলপমেন্ট শুরু করবেন কিভাবে
২. ওয়ার্ডপ্রেস টার্মিনোলজি
৩. ওয়ার্ডপ্রেস ডেভেলপমেন্ট শুরু করার জন্য প্রয়োজনীয় টুলস এবং সেটআপ
৪. ভার্চুয়াল হোস্টের অ আ ক খ
৫. ইনস্টলিং ওয়ার্ডপ্রেস
৬. ওয়ার্ডপ্রেস সিকিউরিটি অ আ ক খ – প্রাথমিক ধারনা
৭. ওয়ার্ডপ্রেস কনফিগারেশন ফাইলের দশটি টিপস এবং ট্রিকস
৮. কুইক টিপস ০১: ওয়ার্ডপ্রেসে ইমেজের ইউআরএল সিডিএনের ইউআরএল দিয়ে রিপ্লেস করা
৯. কিভাবে ওয়ার্ডপ্রেসে নিজের থিমে রিডাক্স ফ্রেমওয়ার্ক যোগ করব?
১০. ওয়ার্ডপ্রেসে ফোনেটিক বাংলায় লেখার সুবিধা যোগ করব কিভাবে
১১. ওয়ার্ডপ্রেস শর্টকোড ১০১ – পর্ব এক
১২. ওয়ার্ডপ্রেস এডিটরে কাস্টম বাটন যোগ করা
১৩. ব্রাউজারের ক্যাশিং বাড়িয়ে দিয়ে ওয়ার্ডপ্রেস সাইট দ্রুত লোড করুন
১৪. ওয়ার্ডপ্রেস ট্যাক্সনমিতে মেটাবক্স সুবিধা যোগ করা
১৫. ওয়ার্ডপ্রেস লুপে সঠিকভাবে পোস্টের তারিখ দেখানো
১৬. ওয়ার্ডপ্রেস গ্যালারীতে HTML5 মার্কআপ সাপোর্ট
১৭. ওয়ার্ডপ্রেস দ্রুতগতি করণ-১
১৮. কোন প্রকার প্লাগিন ছাড়াই ওয়ার্ডপ্রেস কমেন্ট স্প্যাম থেকে বাঁচার খুবই সহজ উপায়
১৯. ওয়ার্ডপ্রেসের Walker ক্লাসের কাজ ও ধারনা
২০. ওয়ার্ডপ্রেস থিম ডেভেলপমেন্টে লারাভেল টাস্ক টুল এলিক্সিয়ার ( Elixir ) এর ব্যবহার
২১. Twitter Bootstrap#v4.0 ও WP Mix দিয়ে ওয়ার্ডপ্রেস থিম ডেভেলপমেন্ট

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

আজ থেকে (এবং পূর্বেকার) ওয়ার্ডপ্রেস কুকবুকের সমস্ত লেখা ক্রিয়েটিভ কমন্স লাইসেন্সের (BY-NC-SA) অধীনে প্রকাশ করা হল।

BY-NC-SA শব্দটির মাঝে বেশ কয়েকটি গূরুত্বপূর্ন টার্ম রয়েছে।

“BY” অর্থ লেখকের ক্রেডিট উল্লেখ করতে হবে
“NC” অর্থ নন কমার্শিয়াল। অর্থাৎ এই লেখা গুলো কোনভাবেই কোন কমার্শিয়াল কাজে ব্যবহার করা যাবে না
“SA” অর্থ এই লেখাটি বা এই লেখার উপরে ভিত্তি করে কোন ডেরিভেটিভ কাজ করলে বা শেয়ার করলে সেটাও অবশ্যই ক্রিয়েটিভ কমন্স BY-NC-SA লাইসেন্সের অধীনেই প্রকাশ করা লাগবে

ক্রিয়েটিভ কমন্স লাইসেন্সের ব্যপারে বিস্তারিত জানতে এখানে ভিজিট করতে পারেন
http://en.wikipedia.org/wiki/Creative_Commons_license

Tip 003 – Installing Themes and Plugins from the Admin Panel without providing FTP details

In default installation of WordPress, whenever you are trying to install a plugin or themes from the repository, you will ask for FTP credentials to proceed. I found that is pretty disturbing because I don’t understand why WordPress needs that. 

To bypass this annoying step, you can add the following directive in your wp-config.php . Once added, WordPress will never prompt that FTP credential screen again. 

Peace!

Tip 002 – Fixing URLs after migrating your wordpress blog

There are many situations when you need to migrate your blog data from one server to another, sometime from one domain to another domain. In such cases you will often need to fix the urls of the attachments which are included in the post, and other static links referring to old domains.

To fix such URLs easily, install the Velvet Blues Update URLs plugin from the default wordpress repository. Once installed, go to Settings->Update URLs link from your wordpress admin panel and update the URLs as shown in the screenshot below

Velvet Blues Update URLs Plugin

Tip 001 – moving your media files to a different location

WordPress stores all the media files in the uploads directory inside wp-content/uploads directory. Sometime you may want to change it to a different path than the default one for better security or any other purpose. WordPress allows users to change the media directory from configuration file. For example, if you want to move your media files to a new folder named assets in the root directory, change the value of UPLOADS directive like this

Remember not to add any trailing or beginning slash

Sometime after moving media directory, your media files may suffer from 404 Error which are already linked with existing posts using their previous locations. To fix this problem, lets wait for our next post, Tip 002 – Fixing Media File Urls After Migration