نوشتن اولین افزونه وردپرس از صفر

اگر می‌خواهید بدون دست زدن به قالب، قابلیتی به وردپرس اضافه کنید، افزونه بهترین گزینه است. افزونه‌ها کد شما را جدا از قالب نگه می‌دارند، پس با عوض کردن قالب از بین نمی‌روند.

ساختار یک افزونه

کمترین ساختار ممکن برای یک افزونه وردپرس فقط دو فایل است:

hello-academy/
└── hello-academy.php

نکته مهم این است که نام فایل اصلی باید دقیقاً با نام پوشه یکسان باشد، وگرنه وردپرس آن را به‌عنوان افزونه شناسایی نمی‌کند.

کد اصلی افزونه

<?php
/**
 * Plugin Name: سلام آکادمی
 * Description: یک افزونه ساده برای نمایش پیام خوش‌آمد.
 * Version: ۱.۰.۰
 * Author: نام شما
 * Text Domain: hello-academy
 */

if ( ! defined( 'ABSPATH' ) ) {
  exit;
}

function ha_welcome_message() {
  echo '<div class="ha-notice">سلام! این پیام از افزونه می‌آید.</div>';
}
add_action( 'admin_notices', 'ha_welcome_message' );

خط اول هدر PHP الزامی است و نام افزونه را تعیین می‌کند. شرط if ( ! defined( 'ABSPATH' ) ) هم یک محافظ امنیتی است که جلوی اجرای مستقیم فایل را می‌گیرد.

توضیح تابع admin_notices

در اینجا از یک اکشن به نام admin_notices استفاده کردیم. اکشن‌ها نقاط اتصال وردپرس هستند؛ یعنی جاهایی که وردپرس به شما اجازه می‌دهد کد خود را اجرا کنید.

add_action( 'admin_notices', 'ha_welcome_message' );

یعنی «هر وقت وردپرس خواست اعلان‌های پیشخوان را نمایش دهد، تابع من را اجرا کن». این ساده‌ترین شکل کار با اکشن‌هاست.

افزودن استایل اختصاصی

برای اینکه کد HTML شما ظاهر درستی داشته باشد، بهتر است فایل CSS را جداگانه بارگذاری کنید. تابع wp_enqueue_style این کار را انجام می‌دهد.

<?php
function ha_enqueue_assets() {
  wp_enqueue_style(
    'ha-style',
    plugin_dir_url( __FILE__ ) . 'assets/style.css',
    array(),
    '۱.۰.۰'
  );
}
add_action( 'wp_enqueue_scripts', 'ha_enqueue_assets' );

نکات مهم برای افزونه‌ها

  • همیشه با ABSPATH محافظت کنید
  • از پیشوند یکتا برای توابع و کلاس‌ها استفاده کنید تا با افزونه‌های دیگر تداخل نکند
  • هرگز تنظیمات را داخل فایل اصلی ذخیره نکنید؛ از جدول options استفاده کنید
  • برای هر ورودی کاربر، خروجی را با esc_html یا esc_attr امن کنید
  • در توضیحات افزونه، نسخه مورد نیاز وردپرس را بنویسید

یادتان باشد هر خط کدی که می‌نویسید، بار دیگری روی سرور است. کد تمیز و امن، تفاوت بین یک افزونه حرفه‌ای و یک مشکل بزرگ است.

مقاله قبلی
مقاله بعدی