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

توابع تمیز، هوک‌های کارآمد و اسنیپت‌های تست‌شده برای وردپرس، ووکامرس، لاراول و وب مدرن جهت حذف افزونه‌های سنگین، بهبود نمره رندر و سرعت، با امکان کپی فوری و دانلود به عنوان افزونه آماده.

۱۰۰ قطعه کد آماده ۴۰۵۴۸ بار استفاده و کپی شده ۱۰۰٪ تست‌شده و ایمن
فضای کار توسعه و مهندسی کد استودیو بیسکو وب
PHP وردپرس (WordPress) Filter Hook (the_content)

افزودن محتوا و بنر خودکار به انتهای مقالات وردپرس (Content After Post)

با فیلتر `the_content` و بررسی شرط `is_single()`، محتوای دلخواه را به متغیر `$content` الصاق (Append) کنید.

پایین و بی‌خطر (Low Risk) مبتدی (Easy)
<?php
/**
 * افزودن باکس امضا و دعوت به عضویت در خبرنامه به انتهای مقالات
 */
function bisco_append_content_after_post( $content ) {
    // تنها در صفحه تکی نوشته‌های وبلاگ و درون لوپ اصلی اجرا شود
    if ( is_single() && is_main_query() && 'post' === get_post_type() ) {
        $custom_box = '
        <div class="bisco-after-post-cta" style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:8px; padding:20px; margin-top:30px;">
            <h4 style="margin-top:0; color:#1e293b;">آیا این مطلب برای شما مفید بود؟</h4>
            <p style="color:#64748b; font-size:14px;">برای دریافت آخرین ترفندهای توسعه وب و کدهای کاربردی، در خبرنامه ما عضو شوید.</p>
            <a href="/newsletter" style="display:inline-block; background:#6366f1; color:#fff; padding:8px 18px; border-radius:6px; text-decoration:none; font-weight:bold;">عضویت رایگان</a>
        </div>';

        $content .= $custom_box;
    }

    return $content;
}
add_filter( 'the_content', 'bisco_append_content_after_post' );
۴۴۷ 1405/06/29

کد مسدودسازی دسترسی به فایل‌های پنهان و حساس دات‌فایل (.git, .env)

این دستور تمام درخواست‌ها به فایل‌ها یا پوشه‌هایی که با یک نقطه (.) شروع می‌شوند به جز دایرکتوری .well-known (برای صدور گواهینامه SSL) را به خطای 403 می‌فرستد.

متوسط (Medium Risk) متوسط (Medium)
<IfModule mod_rewrite.c>
RewriteEngine On
# مسدودسازی دسترسی به تمام دات‌فایل‌ها به جز پوشه احراز هویت SSL
RewriteRule (^\.|/\.) - [F]
RewriteRule ^\.well-known/ - [L]
</IfModule>
۹۳ 1405/06/29

کد فعال‌سازی فشرده‌سازی بروتلی (Brotli Compression) در Nginx و Apache

اگر وب‌سرور شما از ماژول ngx_brotli در Nginx یا mod_brotli در Apache پشتیبانی می‌کند، این پیکربندی استانداردترین سطح فشرده‌سازی را اعمال می‌کند.

متوسط (Medium Risk) متوسط (Medium)
# کانفیگ بروتلی برای وب‌سرور Nginx
brotli on;
brotli_comp_level 5;
brotli_static on;
brotli_types text/plain text/css application/javascript application/json image/svg+xml application/xml+rss font/woff2;

# یا برای وب‌سرور Apache در صورت فعال بودن mod_brotli:
# <IfModule mod_brotli.c>
#     AddOutputFilterByType BROTLI_COMPRESS text/html text/plain text/xml text/css application/javascript application/json
# </IfModule>
۴۵۸ 1405/06/29
PHP وردپرس (WordPress) Filter Hook (the_content)

افزودن محتوا و اعلان خودکار به ابتدای مقالات وردپرس (Content Before Post)

با فیلتر `the_content` باکس اخطار یا اعلان را قبل از `$content` الحاق کنید.

پایین و بی‌خطر (Low Risk) مبتدی (Easy)
<?php
/**
 * افزودن کادر اطلاع‌رسانی مهم به بالاتر از متن اصلی تمام مقالات
 */
function bisco_prepend_content_before_post( $content ) {
    if ( is_single() && is_main_query() && 'post' === get_post_type() ) {
        $notice_box = '
        <div class="bisco-before-post-notice" style="background:#fffbeb; border-right:4px solid #f59e0b; padding:12px 16px; margin-bottom:24px; border-radius:4px;">
            <p style="margin:0; font-size:14px; color:#92400e;">
                <strong>نکته فنی:</strong> کدهای این مقاله برای PHP 8.2 و بالاتر و آخرین نسخه پایدار وردپرس بازبینی و تایید شده‌اند.
            </p>
        </div>';

        $content = $notice_box . $content;
    }

    return $content;
}
add_filter( 'the_content', 'bisco_prepend_content_before_post' );
۷۳۶ 1405/06/29
PHP ووکامرس (WooCommerce) Filter Hook (woocommerce_product_tabs)

تغییر ترتیب تب‌های صفحه محصول در ووکامرس (Reorder Product Tabs)

با فیلتر `woocommerce_product_tabs`، کلید `'priority'` هر تب را بر اساس ترتیب دلخواه خود بازنویسی کنید.

پایین و بی‌خطر (Low Risk) متوسط (Medium)
<?php
/**
 * تغییر ترتیب قرارگیری زبانه‌های صفحه محصول ووکامرس
 */
function bisco_reorder_product_tabs( $tabs ) {
    // تب نظرات کاربران در جایگاه اول قرار گیرد
    if ( isset( $tabs['reviews'] ) ) {
        $tabs['reviews']['priority'] = 10;
    }

    // تب توضیحات تکمیلی در جایگاه دوم
    if ( isset( $tabs['description'] ) ) {
        $tabs['description']['priority'] = 20;
    }

    // تب اطلاعات بیشتر (مشخصات فنی) در جایگاه سوم
    if ( isset( $tabs['additional_information'] ) ) {
        $tabs['additional_information']['priority'] = 30;
    }

    return $tabs;
}
add_filter( 'woocommerce_product_tabs', 'bisco_reorder_product_tabs', 98 );
۶۴۳ 1405/06/29

کد تنظیم Cache-Control اختصاصی برای فایل‌های CSS و JavaScript در htaccess

این دستور هدر Cache-Control را با مقدار public, max-age=31536000, immutable برای استایل‌ها و اسکریپت‌ها ست می‌کند.

پایین و بی‌خطر (Low Risk) مبتدی (Easy)
<IfModule mod_headers.c>
<FilesMatch "\.(css|js)$">
    Header set Cache-Control "max-age=31536000, public, immutable"
</FilesMatch>
</IfModule>
۲۲۳ 1405/06/29

کد مسدودسازی دسترسی مستقیم به فایل wp-config.php در htaccess

با دستور Files wp-config.php در htaccess، هر کاربری که آدرس فایل کانفیگ را وارد کند با پاسخ 403 Forbidden مسدود می‌شود.

متوسط (Medium Risk) مبتدی (Easy)
# مسدودسازی دسترسی به فایل پیکربندی پایگاه داده وردپرس
<Files wp-config.php>
<IfModule mod_authz_core.c>
    Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
    Order deny,allow
    Deny from all
</IfModule>
</Files>
۶۴۲ 1405/06/29

محدود کردن تعداد رونوشت‌های وردپرس (WP_POST_REVISIONS)

با قرار دادن کد `define('WP_POST_REVISIONS', 5);` در wp-config.php، وردپرس برای هر نوشته تنها ۵ رونوشت آخر را نگه‌داشته و نسخه‌های قدیمی‌تر را به شکل خودکار حذف می‌کند.

پایین و بی‌خطر (Low Risk) مبتدی (Easy)
/**
 * محدودسازی رونوشت‌های ذخیره‌شده برای نوشته‌ها و برگه‌ها
 * به حداکثر ۵ مورد به منظور بهینه‌سازی حجم دیتابیس
 */
define( 'WP_POST_REVISIONS', 5 );
۷۰۴ 1405/06/29
PHP ووکامرس (WooCommerce) CRUD & HPOS API

دریافت اطلاعات سفارش سازگار با دیتابیس HPOS ووکامرس (High-Performance Order Storage)

با متد `Automattic\\WooCommerce\\Utilities\\OrderUtil::custom_orders_table_usage_is_enabled()` سازگاری را بررسی کرده و داده‌ها را با شیء `$order->get_...()` به جای `get_post_meta` مدیریت نمایید.

حساس و پرخطر (High Risk) پیشرفته (Hard)
<?php
use Automattic\WooCommerce\Utilities\OrderUtil;

/**
 * اعلام رسمی سازگاری قالب/پلاگین با معماری HPOS ووکامرس
 */
add_action( 'before_woocommerce_init', function() {
    if ( class_exists( '\Automattic\WooCommerce\Utilities\FeaturesUtil' ) ) {
        \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true );
    }
} );

/**
 * دریافت و پردازش اطلاعات سفارش با متدهای CRUD کاملاً سازگار با HPOS
 */
function bisco_process_hpos_compatible_order( $order_id ) {
    // واکشی امن شیء سفارش بدون در نظر گرفتن محل فیزیکی ذخیره در دیتابیس
    $order = wc_get_order( $order_id );
    if ( ! $order ) {
        return;
    }

    // بررسی اینکه آیا سیستم در حالت HPOS اختصاصی کار می‌کند
    $is_hpos_active = OrderUtil::custom_orders_table_usage_is_enabled();

    // روش استاندارد خواندن اطلاعات اصلی سفارش
    $customer_id    = $order->get_customer_id();
    $order_total    = $order->get_total();
    $billing_email  = $order->get_billing_email();
    $billing_phone  = $order->get_billing_phone();
    $payment_method = $order->get_payment_method_title();

    // روش استاندارد ذخیره و خواندن متای اختصاصی (بدون get_post_meta)
    $tracking_code = $order->get_meta( '_bisco_post_tracking_code', true );

    // به‌روزرسانی متای سفارش با متد CRUD
    $order->update_meta_data( '_bisco_processed_at', current_time( 'mysql' ) );
    $order->save(); // ذخیره خودکار در جدول صحیح (چه wp_posts باشد چه wp_wc_orders)
}

/**
 * واکشی سفارش‌های در حال پردازش با wc_get_orders به جای WP_Query سنتی
 */
function bisco_get_recent_processing_orders() {
    $args = array(
        'status'  => array( 'wc-processing' ),
        'limit'   => 10,
        'orderby' => 'date',
        'order'   => 'DESC',
        'return'  => 'ids',
    );

    // این تابع به صورت هوشمند از جداول سریع HPOS کوئری می‌زند
    $order_ids = wc_get_orders( $args );

    return $order_ids;
}
۶۳۹ 1405/06/29

کد کش مرورگر برای فایل‌های استاتیک در htaccess (Leverage Browser Caching)

این کد زمان ماندگاری فایل‌های تصویری و اسکریپتی را در کش مرورگر به مدت ۱ ماه تا ۱ سال تنظیم می‌کند تا نمره Leverage Browser Caching سبز شود.

پایین و بی‌خطر (Low Risk) مبتدی (Easy)
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"

# فایل‌های متنی و استاتیک
ExpiresByType text/html "access plus 0 seconds"
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType application/x-javascript "access plus 1 year"

# تصاویر
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType image/x-icon "access plus 1 year"

# فونت‌ها
ExpiresByType font/woff2 "access plus 1 year"
ExpiresByType font/woff "access plus 1 year"
ExpiresByType font/ttf "access plus 1 year"
</IfModule>
۲۲۰ 1405/06/29

ثبت خطاهای وردپرس در فایل گزارش (WP_DEBUG_LOG)

کدهای زیر را در wp-config.php قرار دهید تا خطاها بی‌صدا در مسیر `wp-content/debug.log` ذخیره شوند.

متوسط (Medium Risk) متوسط (Medium)
/**
 * فعال‌سازی ثبت مخفیانه خطاها در فایل لاگ اختصاصی
 */
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );
۱۲۵ 1405/06/29

سبد خرید شما

0 افزونه

سبد خرید شما خالی است

هنوز محصولی را به سبد خرید اضافه نکرده‌اید. می‌توانید از افزونه‌های اختصاصی ما دیدن فرمایید.

مشاهده فروشگاه افزونه‌ها

ثبت درخواست مشاوره

با تکمیل فرم زیر، کارشناسان فنی بیسکو وب در سریع‌ترین زمان ممکن با شما تماس می‌گیرند.

مشاور
پشتیبانی و مشاوره تخصصی
پاسخگویی سریع کارشناسان
09903336117