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

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

۱۰۰ قطعه کد آماده ۴۰۵۴۸ بار استفاده و کپی شده ۱۰۰٪ تست‌شده و ایمن
فضای کار توسعه و مهندسی کد استودیو بیسکو وب

کد جلوگیری از هات‌لینک تصاویر در وب‌سرور آپاچی (Prevent Image Hotlinking)

با این دستور در htaccess، اگر دامنه درخواست‌کننده عکس جزو دامنه‌های مجاز شما نباشد، تصویر مسدود شده و خطای 403 برگردانده می‌شود.

متوسط (Medium Risk) متوسط (Medium)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com [NC]
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?google\. [NC]
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?bing\. [NC]
RewriteRule \.(jpe?g|png|gif|webp|avif|bmp)$ - [F,NC]
</IfModule>
۶۶۶ 1405/06/29
BASH سرور و هاستینگ (Server) Crontab / CLI command

تنظیم کرون جاب واقعی سرور برای وردپرس (Real Server Cron)

یک کرون جاب در cPanel با بازه هر ۱۰ دقیقه با دستور `wget -q -O - https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1` ثبت کنید.

پایین و بی‌خطر (Low Risk) متوسط (Medium)
# روش اول: استفاده از Wget (سازگار با کلیه هاست‌های اشتراکی)
*/10 * * * * wget -q -O - https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

# روش دوم: استفاده از cURL
*/10 * * * * curl -s https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

# روش سوم: استفاده از WP-CLI (سریع‌ترین و پایدارترین روش در سرور اختصاصی و VPS)
*/10 * * * * cd /home/username/public_html && wp cron event run --due-now >/dev/null 2>&1
۶۶۱ 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

کد مسدودسازی دسترسی مستقیم به فایل 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
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

این کد با فیلتر کردن پسوندهای تصاویر، هدر Cache-Control با ماندگاری ۱ سال تعیین کرده تا کاربر در صفحات بعدی تصاویر تکراری را دوباره دانلود نکند.

پایین و بی‌خطر (Low Risk) مبتدی (Easy)
<IfModule mod_headers.c>
<FilesMatch "\.(ico|jpe?g|png|gif|webp|avif|svg)$">
    Header set Cache-Control "max-age=31536000, public"
</FilesMatch>
</IfModule>
۶۳۲ 1405/06/29
PHP وردپرس (WordPress) Action Hook (register_post_type)

ثبت پست تایپ سفارشی در وردپرس (Custom Post Type)

با تابع `register_post_type` درون اکشن `init` پست تایپ جدید با پشتیبانی از گوتنبرگ (`'show_in_rest' => true`) بسازید.

متوسط (Medium Risk) متوسط (Medium)
<?php
/**
 * ثبت پست تایپ سفارشی نمونه کارها (Portfolio) با استانداردهای مدرن وردپرس
 */
function bisco_register_portfolio_cpt() {
    $labels = array(
        'name'               => 'نمونه کارها',
        'singular_name'      => 'نمونه کار',
        'menu_name'          => 'نمونه کارها',
        'add_new'            => 'افزودن نمونه کار',
        'add_new_item'       => 'افزودن نمونه کار جدید',
        'edit_item'          => 'ویرایش نمونه کار',
        'new_item'           => 'نمونه کار جدید',
        'view_item'          => 'مشاهده نمونه کار',
        'search_items'       => 'جستجوی نمونه کارها',
        'not_found'          => 'هیچ نمونه کاری یافت نشد',
        'not_found_in_trash' => 'در زباله‌دان موردی یافت نشد',
    );

    $args = array(
        'labels'              => $labels,
        'public'              => true,
        'has_archive'         => true,
        'publicly_queryable'  => true,
        'show_ui'             => true,
        'show_in_menu'        => true,
        'show_in_rest'        => true, // فعال‌سازی ویرایشگر گوتنبرگ و REST API
        'query_var'           => true,
        'rewrite'             => array( 'slug' => 'portfolio', 'with_front' => false ),
        'capability_type'     => 'post',
        'hierarchical'        => false,
        'menu_position'       => 5,
        'menu_icon'           => 'dashicons-portfolio',
        'supports'            => array( 'title', 'editor', 'thumbnail', 'excerpt', 'revisions' ),
    );

    register_post_type( 'portfolio', $args );
}
add_action( 'init', 'bisco_register_portfolio_cpt' );
۶۲۶ 1405/06/29

حذف استایل Dashicons برای کاربران مهمان در وردپرس (Remove Dashicons)

با قرار دادن کد زیر در functions.php، استایل dashicons برای تمام کاربرانی که لاگین نکرده‌اند لغو ثبت (deregister) می‌شود.

پایین و بی‌خطر (Low Risk) مبتدی (Easy)
<?php
/**
 * غیرفعال‌سازی بارگذاری Dashicons در فرانت‌اند برای کاربران مهمان
 */
function bisco_remove_dashicons_for_guests() {
    if ( ! is_user_logged_in() ) {
        wp_deregister_style( 'dashicons' );
    }
}
add_action( 'wp_enqueue_scripts', 'bisco_remove_dashicons_for_guests', 100 );
۶۱۴ 1405/06/29
PHP ووکامرس (WooCommerce) Filter Hook (wc_product_sku_enabled)

مخفی کردن شناسه محصول یا کد کالا در ووکامرس (Hide SKU)

با بازگرداندن `__return_false` به فیلتر `wc_product_sku_enabled`، نمایش SKU را در فرانت‌اند خاموش کنید.

پایین و بی‌خطر (Low Risk) مبتدی (Easy)
<?php
/**
 * غیرفعال‌سازی و مخفی کردن نمایش شناسه کالا (SKU) در صفحات محصول ووکامرس
 */
add_filter( 'wc_product_sku_enabled', '__return_false' );
۶۰۳ 1405/06/29
PHP ووکامرس (WooCommerce) Action Hook (remove_action)

حذف کامل بخش محصولات مرتبط در ووکامرس (Remove Related Products)

با دستور `remove_action` تابع `woocommerce_output_related_products` را از هوک `woocommerce_after_single_product_summary` لغو کنید.

پایین و بی‌خطر (Low Risk) مبتدی (Easy)
<?php
/**
 * حذف کامل بلوک محصولات مرتبط از صفحه تکی محصولات ووکامرس
 */
remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20 );
۵۹۲ 1405/06/29
PHP وردپرس (WordPress) Post Meta Helper

شمارنده تعداد بازدید پست‌ها بدون افزونه در وردپرس (Post View Counter)

با تابع زیر در اکشن `wp_head` بازدید ثبت شده و با `[post_views]` تعداد بازدیدها نمایش داده می‌شود.

پایین و بی‌خطر (Low Risk) متوسط (Medium)
<?php
/**
 * سیستم سبک ثبت و نمایش تعداد بازدید پست در متای وردپرس
 */
function bisco_track_post_views() {
    if ( ! is_single() ) {
        return;
    }

    global $post;
    if ( ! isset( $post->ID ) ) {
        return;
    }

    // عدم شمارش بازدید ربات‌ها یا پیش‌نمایش‌ها
    if ( is_preview() || is_robots() ) {
        return;
    }

    $post_id = $post->ID;
    $count_key = 'bisco_post_views_count';
    $count = (int) get_post_meta( $post_id, $count_key, true );

    if ( empty( $count ) ) {
        delete_post_meta( $post_id, $count_key );
        add_post_meta( $post_id, $count_key, 1 );
    } else {
        $count++;
        update_post_meta( $post_id, $count_key, $count );
    }
}
add_action( 'wp_head', 'bisco_track_post_views' );

// شورت‌کد نمایش بازدید
add_shortcode( 'post_views', function() {
    $post_id = get_the_ID();
    $count = (int) get_post_meta( $post_id, 'bisco_post_views_count', true );
    return '<span class="bisco-post-views">بازدید: ' . number_format_i18n( $count ) . '</span>';
} );
۵۸۲ 1405/06/29

تغییر مدت زمان نگهداری زباله‌دان وردپرس (EMPTY_TRASH_DAYS)

با افزودن `define('EMPTY_TRASH_DAYS', 7);` در wp-config.php، زباله‌دان وردپرس به جای ۳۰ روز، هر ۷ روز یکبار به صورت خودکار تخلیه می‌گردد.

پایین و بی‌خطر (Low Risk) مبتدی (Easy)
/**
 * تغییر مدت زمان نگهداری اقلام سطل زباله به ۷ روز
 * (پیش‌فرض وردپرس ۳۰ روز است)
 */
define( 'EMPTY_TRASH_DAYS', 7 );
۵۷۹ 1405/06/29

سبد خرید شما

0 افزونه

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

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

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

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

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

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