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

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

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

شورت‌کد نمایش تاریخ آخرین به‌روزرسانی نوشته در وردپرس (Last Updated Shortcode)

با شورت‌کد `[last_updated]` تاریخ آخرین اصلاح نوشته را به صورت زیبا در ابتدای مقالات نمایش دهید.

پایین و بی‌خطر (Low Risk) مبتدی (Easy)
<?php
/**
 * شورت‌کد نمایش تاریخ آخرین به‌روزرسانی نوشته
 * نحوه استفاده: [last_updated]
 */
function bisco_last_updated_date_shortcode() {
    $modified_time = get_the_modified_time( 'U' );
    $created_time  = get_the_time( 'U' );

    // اگر نوشته حداقل ۱ روز بعد از ایجاد آپدیت شده باشد تاریخ ویرایش را نشان بده
    if ( $modified_time > ( $created_time + DAY_IN_SECONDS ) ) {
        $date_format = get_option( 'date_format' );
        $updated_date = get_the_modified_date( $date_format );

        return '<span class="bisco-last-updated">آخرین به‌روزرسانی: ' . esc_html( $updated_date ) . '</span>';
    }

    return '';
}
add_shortcode( 'last_updated', 'bisco_last_updated_date_shortcode' );
۲۵۰ 1405/06/29
PHP وردپرس (WordPress) Custom Helper & Shortcode

محاسبه و نمایش زمان تقریبی مطالعه نوشته در وردپرس (Reading Time)

با کد زیر تعداد کلمات متن شمرده شده و بر اساس سرعت استاندارد ۲۰۰ کلمه در دقیقه، زمان تقریبی با شورت‌کد `[reading_time]` چاپ می‌شود.

پایین و بی‌خطر (Low Risk) مبتدی (Easy)
<?php
/**
 * محاسبه خودکار زمان تقریبی مطالعه بر اساس تعداد کلمات متن فارسی/انگلیسی
 * نحوه استفاده: [reading_time] یا فراخوانی تابع bisco_get_reading_time() در پوسته
 */
function bisco_get_reading_time( $post_id = null ) {
    $post = get_post( $post_id );
    if ( ! $post ) {
        return '';
    }

    $content = strip_shortcodes( $post->post_content );
    $clean_content = wp_strip_all_tags( $content );

    // شمارش کلمات برای متون فارسی و یونیکد
    $word_count = count( preg_split( '/\s+/u', trim( $clean_content ) ) );

    // سرعت میانگین مطالعه: ۲۰۰ کلمه در دقیقه
    $reading_time = ceil( $word_count / 200 );

    if ( $reading_time < 1 ) {
        $reading_time = 1;
    }

    return sprintf( '%d دقیقه', $reading_time );
}

add_shortcode( 'reading_time', function() {
    $time = bisco_get_reading_time( get_the_ID() );
    return '<span class="bisco-reading-time"><i class="dashicons dashicons-clock"></i> زمان مطالعه: ' . esc_html( $time ) . '</span>';
} );
۲۴۲ 1405/06/29
PHP ووکامرس (WooCommerce) Filter Hook (woocommerce_output_related_products_args)

تغییر تعداد محصولات مرتبط در ووکامرس (Related Products Count)

با فیلتر `woocommerce_output_related_products_args` تعداد محصولات مرتبط (posts_per_page) و تعداد ستون‌ها را تغییر دهید.

پایین و بی‌خطر (Low Risk) مبتدی (Easy)
<?php
/**
 * تغییر تعداد کل و تعداد ستون‌های محصولات مرتبط در صفحه تکی محصول
 */
function bisco_related_products_args( $args ) {
    $args['posts_per_page'] = 4; // تعداد کل محصولات مرتبط
    $args['columns']        = 4; // نمایش در یک ردیف ۴ ستونه
    return $args;
}
add_filter( 'woocommerce_output_related_products_args', 'bisco_related_products_args', 20 );
۲۴۱ 1405/06/29

غیرفعال کردن اموجی‌های پیش‌فرض وردپرس جهت بهبود سرعت (Disable Emojis)

با قرار دادن کد زیر در functions.php، اسکریپت‌های زائد اموجی وردپرس حذف شده و سرعت لود و نمره Core Web Vitals بهبود می‌یابد.

پایین و بی‌خطر (Low Risk) مبتدی (Easy)
<?php
/**
 * غیرفعال‌سازی کدهای جاوااسکریپت و استایل‌های مربوط به ایموجی وردپرس
 */
function bisco_disable_emojis() {
    remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
    remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
    remove_action( 'wp_print_styles', 'print_emoji_styles' );
    remove_action( 'admin_print_styles', 'print_emoji_styles' );
    remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
    remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
    remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
    add_filter( 'tiny_mce_plugins', 'bisco_disable_emojis_tinymce' );
    add_filter( 'wp_resource_hints', 'bisco_disable_emojis_dns_prefetch', 10, 2 );
}
add_action( 'init', 'bisco_disable_emojis' );

function bisco_disable_emojis_tinymce( $plugins ) {
    return is_array( $plugins ) ? array_diff( $plugins, array( 'wpemoji' ) ) : array();
}

function bisco_disable_emojis_dns_prefetch( $urls, $relation_type ) {
    if ( 'dns-prefetch' === $relation_type ) {
        $emoji_svg_url = apply_filters( 'emoji_svg_url', 'https://s.w.org/images/core/emoji/' );
        $urls = array_diff( $urls, array( $emoji_svg_url ) );
    }
    return $urls;
}
۲۳۷ 1405/06/29
PHP ووکامرس (WooCommerce) Conditional Filter Hook

تغییر متن دکمه خرید بر اساس دسته‌بندی یا نوع محصول در ووکامرس

با تابع `has_term` درون فیلتر `woocommerce_product_single_add_to_cart_text` متن دکمه را بر اساس دسته کالا تفکیک کنید.

پایین و بی‌خطر (Low Risk) متوسط (Medium)
<?php
/**
 * تغییر متن دکمه خرید بر اساس دسته‌بندی و نوع محصول در ووکامرس
 */
function bisco_category_based_cart_button_text( $text ) {
    global $product;
    if ( ! $product ) {
        return $text;
    }

    $product_id = $product->get_id();

    // برای دسته دوره‌های آموزشی
    if ( has_term( 'courses', 'product_cat', $product_id ) ) {
        return 'ثبت‌نام و شرکت در دوره';
    }

    // برای دسته فایل‌ها و محصولات دانلودی
    if ( has_term( 'downloads', 'product_cat', $product_id ) || $product->is_downloadable() ) {
        return 'خرید و دانلود آنی فایل';
    }

    // برای محصولات رایگان
    if ( '0' == $product->get_price() || empty( $product->get_price() ) ) {
        return 'دریافت رایگان';
    }

    return $text;
}
add_filter( 'woocommerce_product_single_add_to_cart_text', 'bisco_category_based_cart_button_text' );
۲۳۵ 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

کد کش مرورگر برای فایل‌های استاتیک در 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
PHP سئو تکنیکال (Technical SEO) Schema Generator Hook

اسکیمای ساختاریافته سازمان و کسب‌وکار در وردپرس (Organization Schema JSON-LD)

با هوک `wp_head` یک بلاک اسکریپت `application/ld+json` معتبر حاوی اطلاعات برند و شبکه‌های اجتماعی در صفحه اصلی درج کنید.

پایین و بی‌خطر (Low Risk) متوسط (Medium)
<?php
/**
 * تزریق اسکیمای معتبر داده‌های سازمان (Organization) به صورت JSON-LD در هدر
 */
function bisco_output_organization_schema() {
    // اسکیمای سازمان را منحصراً در صفحه اصلی درج می‌کنیم تا از تکرار در کل صفحات پرهیز شود
    if ( ! is_front_page() ) {
        return;
    }

    $schema = array(
        '@context'      => 'https://schema.org',
        '@type'         => 'Organization',
        '@id'           => esc_url( home_url( '/#organization' ) ),
        'name'          => get_bloginfo( 'name' ),
        'url'           => esc_url( home_url( '/' ) ),
        'logo'          => array(
            '@type'  => 'ImageObject',
            'url'    => esc_url( home_url( '/logo.png' ) ), // نشانی مستقیم فایل لوگوی رسمی
            'width'  => 512,
            'height' => 512,
        ),
        'contactPoint'  => array(
            '@type'             => 'ContactPoint',
            'telephone'         => '+98-21-12345678',
            'contactType'       => 'customer service',
            'areaServed'        => 'IR',
            'availableLanguage' => array( 'Persian' ),
        ),
        'sameAs'        => array(
            'https://www.instagram.com/yourbrand',
            'https://t.me/yourbrand',
            'https://x.com/yourbrand',
            'https://www.linkedin.com/company/yourbrand',
        ),
    );

    echo '<script type="application/ld+json">' . wp_json_encode( $schema, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT ) . '</script>' . "
";
}
add_action( 'wp_head', 'bisco_output_organization_schema', 2 );
۲۰۸ 1405/06/29

غیرفعال کردن اسکریپت امبد وردپرس (Disable oEmbed)

با قرار دادن کد زیر در functions.php، فایل wp-embed.min.js کاملاً لغو ثبت شده و درخواست اضافه حذف می‌گردد.

پایین و بی‌خطر (Low Risk) مبتدی (Easy)
<?php
/**
 * غیرفعال‌سازی اسکریپت wp-embed و فیلترهای تعبیه‌سازی خودکار
 */
function bisco_disable_embeds() {
    // لغو ثبت اسکریپت wp-embed در فرانت
    wp_deregister_script( 'wp-embed' );

    // حذف اندپوینت‌های REST API مربوط به امبد
    remove_action( 'rest_api_init', 'wp_oembed_register_rest_route' );

    // فیلتر کردن کش oEmbed
    add_filter( 'embed_oembed_discover', '__return_false' );

    // حذف متاتگ‌های کشف امبد در هدر
    remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
    remove_action( 'wp_head', 'wp_oembed_add_host_js' );
}
add_action( 'init', 'bisco_disable_embeds', 9999 );
۲۰۷ 1405/06/29
APACHE پیکربندی .htaccess Rewrite Rule

کد هدایت WWW به Non-WWW در آپاچی (.htaccess)

با دستور RewriteCond و بازنویسی در htaccess، هر کاربری که دامنه را با www وارد کند با ریدایرکت ۳۰۱ دائمی به دامنه اصلی بدون www منتقل خواهد شد.

متوسط (Medium Risk) مبتدی (Easy)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
</IfModule>
۱۸۸ 1405/06/29

غیرفعال‌سازی نمایش لیست فایل‌ها و دایرکتوری‌ها (Disable Directory Listing)

با قرار دادن دستور Options -Indexes در فایل .htaccess، دسترسی به فهرست پوشه‌ها مسدود شده و خطای 403 Forbidden برگردانده می‌شود.

پایین و بی‌خطر (Low Risk) مبتدی (Easy)
# جلوگیری از نمایش لیست فایل‌های پوشه‌ها
Options -Indexes
۱۸۴ 1405/06/29
APACHE پیکربندی .htaccess Rewrite Rule

کد هدایت Non-WWW به WWW در آپاچی (.htaccess)

این کد در فایل htaccess تمام درخواست‌ها بدون پیشوند www را تشخیص داده و کاربر را به آدرس معادل دارای www هدایت می‌کند.

متوسط (Medium Risk) مبتدی (Easy)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
۱۵۸ 1405/06/29

سبد خرید شما

0 افزونه

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

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

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

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

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

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