SHET39
English

تابع وردپرس چیست؟ راهنمای توابع پرکاربرد وردپرس

تابع وردپرس چیست؟ راهنمای توابع پرکاربرد وردپرس

اگر موقع ویرایش قالب، ساخت افزونه یا حل یک خطای فنی با نام‌هایی مثل the_title()، wp_enqueue_script() و get_post_meta() روبه‌رو شده‌اید، احتمالاً می‌خواهید بدانید تابع وردپرس چیست و هر تابع دقیقاً چه کاری انجام می‌دهد. پاسخ کوتاه این است: توابع، قطعه‌کدهای آماده یا اختصاصی هستند که یک وظیفه مشخص را انجام می‌دهند؛ از دریافت عنوان نوشته و نمایش تصویر شاخص گرفته تا ایجاد کاربر، اجرای کوئری و بررسی امنیت درخواست.

در این راهنما مفهوم تابع را از پایه یاد می‌گیرید، محل درست استفاده از کد را می‌شناسید و با توابع ضروری WordPress در قالب‌های کلاسیک، قالب‌های بلوکی و افزونه‌ها آشنا می‌شوید. همچنین تفاوت تابع با Template Tag، هوک و متد، روش ساخت تابع اختصاصی، نکات امنیتی و مسیر پیدا کردن تابع مناسب را با مثال‌های عملی بررسی می‌کنیم.

آنچه در این مقاله می‌خوانید

تابع وردپرس چیست و چه کاری انجام می‌دهد؟

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

تابع WordPress نیز یک تابع PHP است که معمولاً توسط هسته WordPress در اختیار توسعه‌دهنده قرار می‌گیرد. این توابع بخشی از APIهای WordPress هستند و کارهایی مثل دریافت تنظیمات، مدیریت نوشته‌ها، ساخت URL، بارگذاری فایل‌ها و بررسی دسترسی کاربران را ساده می‌کنند. فهرست و جزئیات آن‌ها در WordPress Developer Resources مستند شده است.

مرجع رسمی توابع و کلاس‌های WordPress برای جستجو و بررسی جزئیات هر تابع
مرجع رسمی توابع و کلاس‌های WordPress برای جستجو و بررسی جزئیات هر تابع

در کنار توابع آماده هسته، شما هم می‌توانید تابع اختصاصی بنویسید. تفاوت اصلی این است که تابع آماده، رفتار عمومی و مستندشده WordPress را ارائه می‌کند؛ اما تابع اختصاصی برای نیاز مشخص پروژه شما ساخته می‌شود و معمولاً چند تابع آماده را کنار هم قرار می‌دهد.

function mihanwp_discounted_price( $price, $percent ) {
    $discount = $price * ( $percent / 100 );
    return $price - $discount;
}

$final_price = mihanwp_discounted_price( 1000000, 10 );

در این مثال، $price و $percent پارامترهای تابع هستند، مقادیر 1000000 و 10 آرگومان‌های فراخوانی‌اند و دستور return خروجی را برمی‌گرداند. همه توابع خروجی ندارند؛ بعضی از آن‌ها نتیجه را مستقیماً چاپ می‌کنند یا تغییری در WordPress به وجود می‌آورند.

چرا بهتر است از توابع استاندارد WordPress استفاده کنیم؟

  • استفاده دوباره از امکانات هسته: لازم نیست قابلیت‌هایی مثل تولید URL، دریافت نوشته یا بررسی مجوز کاربر را از ابتدا پیاده‌سازی کنید.
  • خوانایی بهتر: توسعه‌دهندگان WordPress با نام و رفتار توابع استاندارد آشنا هستند و کد را راحت‌تر نگهداری می‌کنند.
  • هماهنگی بیشتر: استفاده از API عمومی هسته معمولاً سازگاری کد با ساختار WordPress و افزونه‌های دیگر را بهتر می‌کند.
  • مدیریت تغییرات: WordPress برای سازگاری عقب‌رو اهمیت زیادی قائل است؛ بااین‌حال، باید منسوخ‌شدن توابع و پیشنهادهای جدید مستندات را هم بررسی کنید.

البته استفاده از یک تابع WordPress به‌تنهایی امنیت کد را تضمین نمی‌کند. مسئولیت اعتبارسنجی ورودی، پاک‌سازی داده، Escape کردن خروجی، بررسی Nonce و کنترل Capability همچنان با توسعه‌دهنده است.

توابع وردپرس کجا استفاده می‌شوند؟

استفاده از توابع در قالب‌های کلاسیک

در قالب کلاسیک، فایل‌هایی مثل header.php، footer.php، single.php و archive.php با PHP ساخته می‌شوند و معمولاً Template Tagها را مستقیماً فراخوانی می‌کنند. فایل functions.php نیز هنگام فعال‌بودن قالب بارگذاری می‌شود و محل راه‌اندازی قابلیت‌های وابسته به همان قالب است.

بهتره همه منطق پروژه را در یک فایل جمع نکنید. می‌توانید کدها را بر اساس مسئولیت در فایل‌های جدا قرار دهید و با require_once بارگذاری کنید. فراموش نکنید که functions.php افزونه نیست و با تغییر قالب، کدهای آن هم از چرخه اجرا خارج می‌شوند.

استفاده از توابع در قالب‌های بلوکی

در قالب بلوکی، ساختار اصلی صفحات با قالب‌های HTML، بلوک‌ها، Template Partها و Site Editor شکل می‌گیرد. فایل theme.json نیز تنظیمات طراحی، رنگ‌ها، تایپوگرافی و استایل بلوک‌ها را مدیریت می‌کند. بنابراین بسیاری از کارهایی که در قالب کلاسیک با Template Tag انجام می‌شد، اینجا با بلوک‌هایی مثل Query Loop و Navigation انجام می‌شود.

بااین‌حال PHP حذف نشده است. ثبت قابلیت‌های قالب، بارگذاری Assetها، ساخت الگوی بلوک، ثبت Block Style، اتصال به هوک‌ها و پیاده‌سازی قابلیت‌های پویا همچنان می‌تواند به توابع WordPress نیاز داشته باشد.

استفاده از توابع در افزونه‌ها

WordPress افزونه را از فایل اصلی دارای Plugin Header بارگذاری می‌کند. پروژه‌های کوچک ممکن است فقط یک فایل داشته باشند، اما در افزونه‌های جدی بهتره منطق مدیریت، بخش عمومی، API و کلاس‌ها را تفکیک کنید. قابلیتی که باید با تغییر قالب باقی بماند—مثل اتصال به سرویس خارجی، نوع نوشته سفارشی یا منطق عضویت—معمولاً جای مناسبی در افزونه دارد.

استفاده از افزونه اختصاصی یا Child Theme برای کدهای سفارشی

هیچ‌وقت فایل‌های هسته WordPress یا قالب والد را مستقیماً ویرایش نکنید؛ چون به‌روزرسانی می‌تواند تغییرات شما را بازنویسی کند. اگر کد فقط ظاهر و رفتار همان قالب را تغییر می‌دهد، Child Theme انتخاب مناسبی است. اگر قابلیت باید مستقل از قالب باقی بماند، یک افزونه اختصاصی کوچک بسازید.

چطور یک تابع اختصاصی در WordPress بنویسیم؟

ساختار تابع اختصاصی با PHP تفاوتی ندارد؛ اما نام آن باید یکتا باشد. از Prefix مخصوص پروژه یا Namespace استفاده کنید و سراغ نام‌های عمومی مثل save_data() نروید.

function mihanwp_get_greeting( $name = '' ) {
    $name = sanitize_text_field( $name );

    if ( '' === $name ) {
        return 'سلام!';
    }

    return 'سلام ' . $name . '!';
}

$message = mihanwp_get_greeting( 'رضا' );
echo esc_html( $message );

Prefix احتمال برخورد نام تابع شما با هسته، قالب یا افزونه‌های دیگر را کم می‌کند. در پروژه‌های بزرگ‌تر، Namespace و کلاس‌ها سازمان‌دهی بهتری ایجاد می‌کنند. اگر تابعی با نام تکراری دوباره تعریف شود، PHP معمولاً با Fatal Error اجرای درخواست را متوقف می‌کند.

تفاوت تابع، Template Tag، هوک و متد در WordPress چیست؟

Template Tag چیست؟

Template Tag تابعی است که برای دریافت یا نمایش داده در قالب طراحی شده؛ مثل the_title()، the_content() و get_the_permalink(). پس هر Template Tag یک تابع است، اما هر تابع WordPress الزاماً Template Tag نیست.

اکشن و فیلتر چه نقشی دارند؟

هوک‌ها نقاط اتصال شما به چرخه اجرای WordPress هستند. اکشن اجازه می‌دهد در زمان مشخص کاری انجام دهید؛ فیلتر نیز داده‌ای را دریافت می‌کند و نسخه تغییرکرده آن را برمی‌گرداند. برای آشنایی عمیق‌تر، راهنمای هوک وردپرس را بخوانید.

function mihanwp_theme_setup() {
    add_theme_support( 'title-tag' );
    add_theme_support( 'post-thumbnails' );
}
add_action( 'after_setup_theme', 'mihanwp_theme_setup' );

کلاس و متد چه تفاوتی با تابع دارند؟

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

چه زمانی باید تابع را مستقیماً فراخوانی کنیم و چه زمانی از هوک کمک بگیریم؟

وقتی همان لحظه به نتیجه نیاز دارید، تابع را مستقیم فراخوانی کنید؛ مثلاً با get_the_title() عنوان را بگیرید. وقتی کد باید در مرحله خاصی از چرخه WordPress اجرا شود یا رفتار موجود را تغییر دهد، آن را به اکشن یا فیلتر مناسب متصل کنید.

توابع پرکاربرد WordPress برای دریافت اطلاعات سایت

$site_name        = get_bloginfo( 'name' );
$site_description = get_bloginfo( 'description' );
$home             = home_url( '/' );
$installation     = site_url( '/' );
$parent_assets    = get_template_directory_uri();
$active_assets    = get_stylesheet_directory_uri();
$stylesheet       = get_stylesheet_uri();

bloginfo() مقدار را چاپ می‌کند، اما get_bloginfo() آن را برمی‌گرداند. home_url() نشانی صفحه اصلی سایت و site_url() محل دسترسی به فایل‌های WordPress را می‌دهد؛ این دو در همه نصب‌ها الزاماً یکسان نیستند. در Child Theme، تابع get_template_directory_uri() مسیر قالب والد و get_stylesheet_directory_uri() مسیر قالب فعال را برمی‌گرداند.

توابع پرکاربرد برای نمایش نوشته‌ها در حلقه WordPress

<?php if ( have_posts() ) : ?>
    <?php while ( have_posts() ) : the_post(); ?>
        <article>
            <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
            <?php the_excerpt(); ?>
            <p><?php echo esc_html( get_the_date() ); ?></p>
        </article>
    <?php endwhile; ?>
<?php endif; ?>

have_posts() وجود آیتم بعدی را بررسی و the_post() داده نوشته جاری را آماده می‌کند. the_title()، the_content() و the_excerpt() خروجی را نمایش می‌دهند؛ نسخه‌های get_ مثل get_the_title() و get_the_excerpt() مقدار را برمی‌گردانند تا پیش از نمایش پردازش شود.

برای اطلاعات تکمیلی می‌توانید از the_author()، get_the_date()، the_category() و the_tags() استفاده کنید. رفتار دقیق هر تابع، مخصوصاً Escape شدن یا نشدن خروجی، باید در مرجع رسمی بررسی شود.

دریافت نوشته‌ها با WP_Query و get_posts()

در صفحه‌های معمول قالب، تا جای ممکن از کوئری اصلی استفاده کنید. برای یک فهرست مستقل—مثلاً پنج نوشته جدید یک دسته—می‌توانید WP_Query بسازید:

$latest_posts = new WP_Query(
    array(
        'post_type'      => 'post',
        'posts_per_page' => 5,
        'no_found_rows'  => true,
    )
);

if ( $latest_posts->have_posts() ) {
    while ( $latest_posts->have_posts() ) {
        $latest_posts->the_post();
        echo '<a href="' . esc_url( get_permalink() ) . '">';
        echo esc_html( get_the_title() );
        echo '</a>';
    }
}

wp_reset_postdata();

بعد از حلقه سفارشی، wp_reset_postdata() داده نوشته جاری را به وضعیت قبلی برمی‌گرداند. get_posts() برای دریافت ساده یک آرایه از نوشته‌ها مناسب است. برای اصلاح کوئری اصلی، معمولاً فیلترکردن آن در اکشن pre_get_posts بهتر از ساخت کوئری جایگزین است؛ البته باید بخش مدیریت و خود کوئری اصلی را دقیق بررسی کنید.

توابع پرکاربرد تصویر شاخص و رسانه

add_theme_support( 'post-thumbnails' );
add_image_size( 'mihanwp-card', 640, 360, true );

if ( has_post_thumbnail() ) {
    the_post_thumbnail( 'mihanwp-card' );
}

برای دریافت HTML تصویر بدون چاپ مستقیم از get_the_post_thumbnail() و برای گرفتن ID از get_post_thumbnail_id() استفاده کنید. اندازه‌های thumbnail، medium و large به تنظیمات رسانه و تغییرات سایت وابسته‌اند و ابعاد ثابتی برای همه سایت‌ها ندارند. جزئیات انتخاب عکس را در راهنمای تصویر شاخص WordPress می‌تونید ببینید.

$thumbnail_id = get_post_thumbnail_id();
$alt_text     = get_post_meta( $thumbnail_id, '_wp_attachment_image_alt', true );
$attachment   = get_post( $thumbnail_id );

توابع منو، ناوبری و صفحه‌بندی

register_nav_menus(
    array(
        'primary' => __( 'منوی اصلی', 'mihanwp' ),
        'footer'  => __( 'منوی فوتر', 'mihanwp' ),
    )
);

wp_nav_menu(
    array(
        'theme_location' => 'primary',
        'fallback_cb'    => false,
    )
);

در آرشیوها، the_posts_pagination() صفحه‌بندی عددی ایجاد می‌کند. در صفحه نوشته نیز previous_post_link() و next_post_link() برای رفت‌وآمد بین مطالب کاربرد دارند. در قالب بلوکی معمولاً بلوک Navigation و بلوک‌های Query Pagination همین مسئولیت را به‌صورت قابل‌ویرایش در Site Editor انجام می‌دهند.

توابع بارگذاری بخش‌های قالب

get_header();
get_sidebar();
get_template_part( 'template-parts/content', get_post_type() );
get_footer();

این توابع فایل‌های PHP قالب کلاسیک را بارگذاری می‌کنند. get_template_part() برای استفاده مجدد از بخش‌های قالب مناسب است و می‌تواند آرگومان هم دریافت کند. در قالب بلوکی، Template Part معمولاً یک فایل HTML در پوشه parts و یک بخش قابل‌ویرایش در Site Editor است؛ بنابراین نباید آن را با Template Part مبتنی بر PHP یکی بدانید.

توابع شرطی WordPress

  • is_front_page(): آیا صفحه اصلی سایت نمایش داده می‌شود؟
  • is_home(): آیا صفحه فهرست نوشته‌ها نمایش داده می‌شود؟
  • is_single()، is_page() و is_singular(): تشخیص محتوای تکی.
  • is_archive()، is_category() و is_tag(): تشخیص آرشیوها.
  • is_search() و is_404(): تشخیص نتایج جستجو و صفحه پیدا نشد.
  • is_user_logged_in() و is_admin(): بررسی ورود کاربر و درخواست بخش مدیریت.

is_home() و is_front_page() یک مفهوم نیستند و نتیجه آن‌ها به تنظیمات خواندن سایت بستگی دارد. Conditional Tagها را هم باید بعد از آماده‌شدن کوئری WordPress و در زمان مناسب اجرا کنید؛ فراخوانی خیلی زود ممکن است نتیجه درستی ندهد.

توابع مدیریت نوشته‌ها و کاربران

ایجاد و ویرایش نوشته

$post_id = wp_insert_post(
    array(
        'post_title'   => 'عنوان نوشته',
        'post_content' => 'محتوای نوشته',
        'post_status'  => 'draft',
        'post_type'    => 'post',
    ),
    true
);

if ( ! is_wp_error( $post_id ) ) {
    update_post_meta( $post_id, 'mihanwp_source', 'editorial' );
}

wp_insert_post() نوشته را ایجاد و wp_update_post() آن را ویرایش می‌کند. با پارامتر دوم true می‌توانید خطا را به‌شکل WP_Error دریافت کنید. برای متادیتا نیز get_post_meta()، update_post_meta() و delete_post_meta() در دسترس‌اند.

دریافت و مدیریت کاربران

wp_get_current_user() کاربر جاری، get_userdata() اطلاعات یک کاربر با ID و get_users() فهرست کاربران مطابق آرگومان‌ها را برمی‌گرداند. برای ایجاد کاربر می‌توانید از wp_insert_user() استفاده کنید و نتیجه را از نظر WP_Error بررسی کنید.

برای اجازه انجام یک عملیات، نقش را با رشته‌هایی مثل Administrator مقایسه نکنید. روش استاندارد، بررسی Capability متناسب با همان عملیات است:

if ( current_user_can( 'edit_post', $post_id ) ) {
    // کاربر اجازه ویرایش این نوشته را دارد.
}

بارگذاری صحیح فایل‌های CSS و JavaScript

به‌جای قراردادن مستقیم تگ‌های link و script در فایل‌های قالب، Assetها را Enqueue کنید. به این شکل WordPress وابستگی، ترتیب بارگذاری، نسخه و جلوگیری از بارگذاری تکراری را مدیریت می‌کند. آموزش تکمیلی را در مقاله افزودن CSS و JavaScript سفارشی بخوانید.

function mihanwp_enqueue_assets() {
    wp_enqueue_style(
        'mihanwp-theme',
        get_stylesheet_uri(),
        array(),
        wp_get_theme()->get( 'Version' )
    );

    wp_enqueue_script(
        'mihanwp-app',
        get_stylesheet_directory_uri() . '/assets/js/app.js',
        array(),
        wp_get_theme()->get( 'Version' ),
        true
    );
}
add_action( 'wp_enqueue_scripts', 'mihanwp_enqueue_assets' );

برای بخش عمومی از wp_enqueue_scripts و برای صفحه‌های مدیریت معمولاً از admin_enqueue_scripts استفاده کنید. فایل‌های مدیریت را فقط در صفحه‌ای که لازم‌اند بارگذاری کنید تا پیشخوان بی‌دلیل سنگین نشود.

مرجع رسمی تابع wp_enqueue_script() و پارامترهای بارگذاری استاندارد فایل‌های JavaScript
مرجع رسمی تابع wp_enqueue_script() و پارامترهای بارگذاری استاندارد فایل‌های JavaScript

امنیت هنگام استفاده از توابع WordPress

اعتبارسنجی و پاک‌سازی ورودی‌ها

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

$name  = sanitize_text_field( wp_unslash( $_POST['name'] ?? '' ) );
$email = sanitize_email( wp_unslash( $_POST['email'] ?? '' ) );
$id    = absint( $_POST['post_id'] ?? 0 );

Escape کردن خروجی

خروجی را در آخرین لحظه و بر اساس محل استفاده Escape کنید: esc_html() برای متن، esc_attr() برای Attribute، esc_url() برای URL و wp_kses_post() برای HTML محدود و مجاز.

echo '<a href="' . esc_url( $url ) . '" title="' . esc_attr( $title ) . '">';
echo esc_html( $label );
echo '</a>';

Nonce و بررسی دسترسی کاربر

Nonce کمک می‌کند معتبر بودن منشأ درخواست را بررسی کنید، اما جایگزین احراز هویت و کنترل مجوز نیست. برای عملیات حساس هم Nonce را بررسی کنید و هم با current_user_can() مطمئن شوید کاربر Capability لازم را دارد.

if (
    ! isset( $_POST['mihanwp_nonce'] ) ||
    ! wp_verify_nonce(
        sanitize_text_field( wp_unslash( $_POST['mihanwp_nonce'] ) ),
        'mihanwp_save_settings'
    )
) {
    wp_die( 'درخواست معتبر نیست.' );
}

if ( ! current_user_can( 'manage_options' ) ) {
    wp_die( 'شما اجازه انجام این کار را ندارید.' );
}

کوئری امن پایگاه داده

در صورت امکان از APIهایی مثل WP_Query، Metadata API و Options API استفاده کنید. اگر SQL سفارشی واقعاً لازم بود، مقادیر متغیر را با $wpdb->prepare() آماده کنید و هیچ ورودی کاربر را مستقیماً داخل رشته SQL نگذارید.

global $wpdb;

$status = 'publish';
$count  = $wpdb->get_var(
    $wpdb->prepare(
        "SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_status = %s",
        $status
    )
);

چطور تابع مناسب WordPress را پیدا کنیم؟

  1. عبارت موردنظرتان را در WordPress Developer Resources جستجو کنید.
  2. توضیح تابع، پارامترها، نوع مقدار بازگشتی و مثال‌ها را بخوانید.
  3. بخش Source را برای شناخت رفتار واقعی و Related Functions را برای یافتن گزینه مناسب‌تر بررسی کنید.
  4. به برچسب Deprecated و تابع جایگزین پیشنهادی توجه کنید.
  5. کد را ابتدا در محیط Staging آزمایش کنید و برای عیب‌یابی، WP_DEBUG را به‌شکل امن فعال کنید.

در قالب‌های جدید، برای عنوان سند از add_theme_support( 'title-tag' ) استفاده کنید و مدیریت تگ title را به WordPress بسپارید. صرف اینکه یک تابع قدیمی هنوز اجرا می‌شود، به این معنی نیست که بهترین انتخاب برای توسعه جدید است.

اشتباهات رایج هنگام کار با توابع WordPress

  • ویرایش مستقیم هسته WordPress یا فایل‌های قالب والد.
  • قرار دادن همه منطق پروژه در functions.php.
  • اجرای تابع پیش از بارگذاری وابستگی‌ها یا اتصال آن به هوک نامناسب.
  • نمایش داده پویا بدون Escape متناسب با Context.
  • اعتماد به ورودی کاربر بدون اعتبارسنجی و پاک‌سازی.
  • فراموش‌کردن wp_reset_postdata() پس از حلقه سفارشی.
  • تغییر کوئری اصلی با روش نامناسب و بدون بررسی is_main_query().
  • مدیریت دستی عنوان صفحه به‌جای پشتیبانی title-tag.
  • انتخاب نام‌های عمومی برای توابع اختصاصی و ایجاد تداخل نام.
  • فرض اینکه هر تابع WordPress به‌صورت خودکار ورودی و خروجی را امن می‌کند.

مسیر پیشنهادی یادگیری توابع WordPress

  1. مبانی PHP شامل متغیر، آرایه، شرط، حلقه، تابع و نوع داده را یاد بگیرید.
  2. ساختار فایل‌ها و چرخه اجرای WordPress را بشناسید.
  3. Template Tagها و حلقه WordPress را در یک قالب آزمایشی تمرین کنید.
  4. اکشن‌ها و فیلترها را یاد بگیرید و زمان اجرای هر هوک را بررسی کنید.
  5. با Sanitization، Escaping، Nonce، Capability، دیتابیس و REST API آشنا شوید.
  6. یک افزونه یا Child Theme کوچک در محیط آزمایشی بسازید.

اگر تازه شروع کرده‌اید، بهتره چند تابع را عمیق یاد بگیرید و با پروژه واقعی تمرین کنید؛ حفظ‌کردن فهرست بزرگی از نام‌ها کمک چندانی نمی‌کند. مستندات رسمی باید همیشه کنار دستتان باشد.

پرسش‌های متداول درباره توابع WordPress

آیا برای استفاده از توابع WordPress باید PHP بلد باشیم؟

برای استفاده‌های ساده، آشنایی مقدماتی با PHP کافی است؛ اما برای نوشتن کد قابل‌نگهداری و امن باید متغیرها، آرایه‌ها، شرط‌ها، حلقه‌ها، توابع، نوع داده و مدیریت خطا را بشناسید.

بهتر است کدهای سفارشی را در functions.php قرار دهیم یا افزونه اختصاصی؟

اگر کد فقط به ظاهر و رفتار همان قالب وابسته است، functions.php در Child Theme مناسب است. قابلیتی که باید با تغییر قالب باقی بماند، بهتر است در افزونه اختصاصی قرار بگیرد.

تفاوت functions.php با فایل اصلی افزونه چیست؟

فایل functions.php فقط همراه قالب فعال بارگذاری می‌شود، اما فایل اصلی افزونه مستقل از قالب است و WordPress آن را پس از فعال‌سازی افزونه بارگذاری می‌کند. بنابراین محل کد را بر اساس وابستگی قابلیت به قالب انتخاب کنید.

آیا توابع WordPress فقط در قالب‌های کلاسیک کاربرد دارند؟

خیر. قالب‌های بلوکی برای ساختار صفحه بیشتر از HTML، بلوک‌ها و theme.json استفاده می‌کنند، اما ثبت قابلیت‌ها، Assetها، هوک‌ها، بلوک‌های پویا و منطق افزونه‌ها همچنان می‌تواند به PHP و توابع WordPress نیاز داشته باشد.

چطور بفهمیم یک تابع منسوخ شده یا جایگزین دارد؟

نام تابع را در WordPress Developer Resources جستجو کنید و توضیحات، نسخه معرفی، Source و برچسب Deprecated را بخوانید. اگر تابع منسوخ شده باشد، مستندات معمولاً جایگزین پیشنهادی را هم مشخص می‌کنند.

آیا استفاده از توابع WordPress به‌تنهایی امنیت کد را تضمین می‌کند؟

خیر. باید ورودی را اعتبارسنجی و پاک‌سازی، خروجی را متناسب با محل استفاده Escape، درخواست را با Nonce بررسی و مجوز کاربر را با current_user_can() کنترل کنید. کوئری SQL سفارشی نیز باید آماده‌سازی شود.

تفاوت the_title() و get_the_title() چیست؟

the_title() عنوان نوشته را مستقیماً نمایش می‌دهد، اما get_the_title() عنوان را برمی‌گرداند تا بتوانید آن را ذخیره، پردازش یا در محل دلخواه و با Escape مناسب نمایش دهید.

جمع‌بندی: از کدام توابع WordPress شروع کنیم؟

حالا می‌دانید تابع وردپرس چیست: یک قطعه کد PHP با مسئولیت مشخص که می‌تواند داده بگیرد، کاری انجام دهد و خروجی برگرداند یا نمایش دهد. توابع استاندارد هسته مسیر توسعه را کوتاه‌تر و کد را هماهنگ‌تر می‌کنند؛ اما انتخاب هوک مناسب، امنیت داده و محل نگهداری کد همچنان به تصمیم درست شما وابسته است.

برای شروع، روی home_url()، get_bloginfo()، توابع حلقه، WP_Query، get_post_meta()، wp_enqueue_style()، wp_enqueue_script() و توابع امنیتی تمرکز کنید. بعد از آن، هوک‌ها، ساخت افزونه ساده و APIهای WordPress را یاد بگیرید. با همین مسیر مرحله‌به‌مرحله می‌تونید به‌جای کپی‌کردن کدهای ناشناس، رفتار هر قطعه کد را بفهمید و با اطمینان بیشتری توسعه دهید.

نظر شما در این مورد چیه؟

  1. U330283۲۹ آبان ۱۴۰۲

    سلام و درود
    من توابع بالا رو در افزونه / در قسمت functions وارد کردم و پیغام خطا داد و وقتی بک زدم کل توابع پاک شد کلا
    و الان سایتم بالا نمیاد . چه جوری میتونم برگردونم ؟ یا لیست توابع رو چه جوری بزنم خطا نده
    ممنونم

    • رضا راد۲۹ آبان ۱۴۰۲

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

      • U330283۲۹ آبان ۱۴۰۲

        نحوه برگردوندن از فایل منیجر رو کجا میتونم ببینم چون از یه سایت دیگه دیدم گزینه بک آپ را بزنیم ولی در فایل منیجر من گزینه بک آپ مشاهده نشد

        • رضا راد۳۰ آبان ۱۴۰۲

          باید از هاست بخواید برگردونه اگه خودتون بک آپ ندارید ازش.

  2. U321839۳ فروردین ۱۴۰۲

    سلام خسته نباشید بعد از زدن گزینه نصب قالب اهورا با این خطا مواجه میشم :
    The connection was reset
    The connection to the server was reset while the page was loading.
    The site could be temporarily unavailable or too busy. Try again in a few moments.
    If you are unable to load any pages, check your computer’s network connection.
    If your computer or network is protected by a firewall or proxy, make sure that Firefox is permitted to access the web.
    ممنون میشم راهنمایی کنید

    • تیم پشتیبانیتیم پشتیبانی۵ فروردین ۱۴۰۲

      سلام
      از آنجایی که برای پشتیبانی محصولات و بررسی دقیق‌تر سوال شما نیاز به دانش فنی بخش پشتیبانی است، لطفا سوالات خود را از بخش پشتیبانی ارسال بفرمایید:
      https://mihanwp.com/support/

  3. U321416۲۷ بهمن ۱۴۰۱

    اگر بخوایم قالبی رو با زبانی مثل پایتون بسازیم.همه این تابع هارو باید مجددا در اون زبان ایجاد کنیم؟

    • رضا راد۱۰ اسفند ۱۴۰۱

      تقریبا بله اما باید به زبان php بسازید تو وردپرس

  4. U39052۲۹ آذر ۱۴۰۱

    عالی👌👌
    یکمم گسترش میدادین برا خودش یه دوره طراحی قالب میشد.

    • تیم پشتیبانیتیم پشتیبانی۱ دی ۱۴۰۱

      درود
      سپاس از توجه شما
      پیروز باشید

پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرس
پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرسخارج از ساعات کاری هستیم؛ دستیار هوش مصنوعی پاسخگوی شماست.هوش مصنوعی

در حال بارگذاری...

هر سوالی دارید بپرسید.پاسخگوی شما هستیم.