আসালামু ওয়ালাইকুম,
আমি তানভীর হোসেন আপনাদের মাঝে প্লাগিন ডেভোলপমেন্ট এর টিউটোরিয়াল নিয়ে এসেছি। আপনারা অনেকেই এই বিষয় শিখতে আগ্রহী আমি বিগত সিরিজে একটি থিম ডেভেলপমেন্ট করেছি এবং সেটিকে একটি পূর্নাঙ্গ ব্যবহারের জন্য ডিজাইন
করেছি। তবে কিছু কাজ সম্পাদনা করা বাকি রয়েছে সেগুলো হলেই আমি থিম ডেভেলপমেন্ট এর ২য় সিরিজটি লঞ্চ করবো। এর মধ্যে দিয়ে যে সময়টুকু পাচ্ছি তাতে আপনাদের ওয়ার্ডপ্রেস এর জন্য একটি গুরুত্বপূর্ণ প্লাগিন ডেভোলপ করা শিখাব। যা ওয়েব সাইটের স্পিড এসইও ও অন্যান্য কাজে সাহায্য করবে।
প্লাগিনটা কিছুটা WP Optimizer এর মতো।
এই বলে আমি আমার উদ্দেশ্য প্রনোদিত করেছি।
কোড কপি করতে সমস্যা হলে
সরাসরি কোড গুলো এখান থেকে কপি করে নিন।
আগের পর্বগুলাতে আমরা বেসিক ফাইল স্ট্রাকচার, অ্যাডমিন মেনু, ইমেজ অপ্টিমাইজেশন, এবং CSS ও JS ফাইল মিনিফিকেশন নিয়ে কাজ করেছিলাম। আজকের পর্বে আমরা আরও গভীরে গিয়ে ডেটাবেজ অপ্টিমাইজেশন নিয়ে কাজ করবো।
ওয়ার্ডপ্রেস সাইটের পারফরম্যান্স উন্নত করার জন্য ডেটাবেজ অপ্টিমাইজেশন খুব গুরুত্বপূর্ণ। সময়ের সাথে সাথে অপ্রয়োজনীয় ডেটা জমে সাইটকে স্লো করে ফেলে। ডেটাবেজ ক্লিনআপ করে আমরা সাইটের গতি বাড়াতে পারি।
এই পর্বে আমরা যা শিখবো:
আমরা একটি নতুন ফাইল তৈরি করবো: includes/db-optimization.php
। এখানে ডেটাবেজ অপ্টিমাইজেশনের কাজ হবে।
<?php
// Add menu for database optimization
add_action('admin_menu', 'speed_optimizer_db_menu');
function speed_optimizer_db_menu() {
add_submenu_page(
'speed-optimizer',
'Database Optimization',
'DB Optimization',
'manage_options',
'speed-optimizer-db',
'speed_optimizer_db_page'
);
}
// Admin page for database optimization
function speed_optimizer_db_page() {
?>
<div class="wrap">
<h1>Database Optimization</h1>
<p>Optimize your database to remove unnecessary data and improve performance.</p>
<form method="post">
<?php wp_nonce_field('speed_optimizer_optimize_db', 'speed_optimizer_nonce'); ?>
<input type="submit" name="optimize_db" value="Optimize Now" class="button button-primary">
</form>
</div>
<?php
if (isset($_POST['optimize_db']) && check_admin_referer('speed_optimizer_optimize_db', 'speed_optimizer_nonce')) {
speed_optimizer_optimize_db();
}
}
// Function to optimize database
function speed_optimizer_optimize_db() {
global $wpdb;
// Delete revisions
$wpdb->query("DELETE FROM $wpdb->posts WHERE post_type = 'revision'");
// Delete trashed posts
$wpdb->query("DELETE FROM $wpdb->posts WHERE post_status = 'trash'");
// Delete spam and trashed comments
$wpdb->query("DELETE FROM $wpdb->comments WHERE comment_approved = 'spam' OR comment_approved = 'trash'");
// Delete expired transients
$wpdb->query("DELETE FROM $wpdb->options WHERE option_name LIKE '_transient_%' AND option_value < NOW()");
echo '<div class="updated"><p>Database optimized successfully!</p></div>';
}
speed-optimizer.php
ফাইলে নিচের লাইন যোগ করুন:
require_once plugin_dir_path(__FILE__) . 'includes/db-optimization.php';
আমরা অ্যাডমিন প্যানেলে একটি সাবমেনু তৈরি করলাম, যেখানে ইউজাররা ক্লিক করেই ডেটাবেজ অপ্টিমাইজ করতে পারবে।
speed_optimizer_db_menu
: সাবমেনু অ্যাড করে।speed_optimizer_db_page
: ডেটাবেজ অপ্টিমাইজেশন পেজ তৈরি করে।speed_optimizer_optimize_db
: ডেটাবেজ থেকে অপ্রয়োজনীয় ডেটা মুছে ফেলে।DB Optimization
মেনুতে যান।Optimize Now
বাটনে ক্লিক করুন।আমাদের ফাংশনগুলো ওয়ার্ডপ্রেসের $wpdb
ক্লাস ব্যবহার করে সরাসরি ডেটাবেজে কাজ করে।
ডেটাবেজ অপ্টিমাইজেশনের সময় সিকিউরিটির বিষয় মাথায় রাখতে হবে।
wp_nonce_field
ব্যবহার করেছি, যাতে CSRF অ্যাটাক প্রতিরোধ হয়।manage_options
ক্যাপাবিলিটির মাধ্যমে।এই পর্বে আমরা শিখলাম:
পরবর্তী পর্বে:
আমরা অটো স্ক্রিপ্টিং এবং স্কেডিউল করা নিয়ে কাজ করবো। এর মাধ্যমে ডেটাবেজ ক্লিনআপ এবং অন্যান্য ফিচার অটোমেটিক্যালি কাজ করবে।
পর্ব ৬-এ দেখা হবে!