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

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

۱۰۰ قطعه کد آماده ۴۰۵۴۸ بار استفاده و کپی شده ۱۰۰٪ تست‌شده و ایمن
فضای کار توسعه و مهندسی کد استودیو بیسکو وب
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 وردپرس (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
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
PHP وردپرس (WordPress) Admin Column Filter & Action

افزودن ستون‌های سفارشی به جدول مدیریت وردپرس (Custom Admin Columns)

با فیلتر `manage_posts_columns` ستون را تعریف کرده و با اکشن `manage_posts_custom_column` محتوای تصویر شاخص را در آن چاپ کنید.

پایین و بی‌خطر (Low Risk) متوسط (Medium)
<?php
/**
 * افزودن ستون تصویر شاخص و تعداد بازدید به جدول نوشته‌های پیشخوان ادمین
 */
function bisco_add_admin_columns( $columns ) {
    $new_columns = array();
    foreach ( $columns as $key => $title ) {
        $new_columns[ $key ] = $title;
        // قرار دادن ستون تصویر دقیقاً بعد از عنوان
        if ( 'title' === $key ) {
            $new_columns['bisco_thumb'] = 'تصویر شاخص';
            $new_columns['bisco_views'] = 'تعداد بازدید';
        }
    }
    return $new_columns;
}
add_filter( 'manage_posts_columns', 'bisco_add_admin_columns' );

// پر کردن داده‌های ستون‌های سفارشی
function bisco_render_admin_columns( $column, $post_id ) {
    if ( 'bisco_thumb' === $column ) {
        if ( has_post_thumbnail( $post_id ) ) {
            echo get_the_post_thumbnail( $post_id, array( 50, 50 ), array( 'style' => 'border-radius:6px; object-fit:cover;' ) );
        } else {
            echo '<span style="color:#999;">—</span>';
        }
    }

    if ( 'bisco_views' === $column ) {
        $views = (int) get_post_meta( $post_id, 'bisco_post_views_count', true );
        echo esc_html( number_format_i18n( $views ) );
    }
}
add_action( 'manage_posts_custom_column', 'bisco_render_admin_columns', 10, 2 );
۵۷۸ 1405/06/29
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
PHP وردپرس (WordPress) Admin Column Helper

نمایش شناسه نوشته (Post ID) در جدول مدیریت وردپرس (Show Post ID)

با هوک‌های `manage_posts_columns` و `manage_pages_columns` یک ستون اختصاصی با عرض ثابت برای Post ID ایجاد کنید.

پایین و بی‌خطر (Low Risk) مبتدی (Easy)
<?php
/**
 * نمایش ستون شناسه عددی نوشته‌ها و برگه‌ها در پیشخوان وردپرس
 */
function bisco_add_id_column( $columns ) {
    $columns['bisco_post_id'] = 'شناسه (ID)';
    return $columns;
}
add_filter( 'manage_posts_columns', 'bisco_add_id_column' );
add_filter( 'manage_pages_columns', 'bisco_add_id_column' );

function bisco_render_id_column( $column, $post_id ) {
    if ( 'bisco_post_id' === $column ) {
        echo '<code style="font-family:monospace; background:#f0f0f1; padding:2px 6px; border-radius:4px; font-weight:600;">' . esc_html( $post_id ) . '</code>';
    }
}
add_action( 'manage_posts_custom_column', 'bisco_render_id_column', 10, 2 );
add_action( 'manage_pages_custom_column', 'bisco_render_id_column', 10, 2 );
۴۰۱ 1405/06/29
PHP وردپرس (WordPress) Action Hook (register_taxonomy)

ثبت دسته‌بندی سفارشی در وردپرس (Custom Taxonomy)

با تابع `register_taxonomy` دسته‌بندی مورد نظر را بسازید و آن را به پست‌تایپ اختصاصی متصل کنید.

متوسط (Medium Risk) متوسط (Medium)
<?php
/**
 * ثبت تاکسونومی سفارشی برای نمونه‌کارها (دسته‌بندی پروژه‌ها)
 */
function bisco_register_portfolio_taxonomy() {
    $labels = array(
        'name'              => 'دسته‌بندی پروژه‌ها',
        'singular_name'     => 'دسته پروژه',
        'search_items'      => 'جستجوی دسته‌ها',
        'all_items'         => 'همه دسته‌ها',
        'parent_item'       => 'دسته مادر',
        'parent_item_colon' => 'دسته مادر:',
        'edit_item'         => 'ویرایش دسته',
        'update_item'       => 'به‌روزرسانی دسته',
        'add_new_item'      => 'افزودن دسته جدید',
        'new_item_name'     => 'نام دسته جدید',
        'menu_name'         => 'دسته‌ها',
    );

    $args = array(
        'hierarchical'      => true, // به صورت دسته‌بندی والد/فرزند باشد (مانند دسته پست‌ها)
        'labels'            => $labels,
        'show_ui'           => true,
        'show_admin_column' => true, // نمایش ستون دسته در جدول ادمین
        'query_var'         => true,
        'show_in_rest'      => true, // نمایش در پنل سایدبار گوتنبرگ
        'rewrite'           => array( 'slug' => 'project-type' ),
    );

    register_taxonomy( 'project_type', array( 'portfolio' ), $args );
}
add_action( 'init', 'bisco_register_portfolio_taxonomy' );
۳۸۸ 1405/06/29
PHP وردپرس (WordPress) REST API Controller

ساخت اندپوینت اختصاصی در REST API وردپرس (Custom REST API Endpoint)

با تابع `register_rest_route` در اکشن `rest_api_init` یک اندپوینت GET با اعتبارسنجی ورودی‌ها بسازید.

متوسط (Medium Risk) پیشرفته (Hard)
<?php
/**
 * ایجاد اندپوینت اختصاصی در REST API برای دریافت خلاصه آمار سایت
 * آدرس اندپوینت: /wp-json/bisco/v1/stats
 */
function bisco_register_custom_rest_route() {
    register_rest_route( 'bisco/v1', '/stats', array(
        'methods'             => WP_REST_Server::READABLE, // متد GET
        'callback'            => 'bisco_get_site_stats_callback',
        'permission_callback' => '__return_true', // اجازه دسترسی عمومی
    ) );
}
add_action( 'rest_api_init', 'bisco_register_custom_rest_route' );

function bisco_get_site_stats_callback( WP_REST_Request $request ) {
    $published_posts = wp_count_posts( 'post' )->publish;
    $comments_count  = wp_count_comments()->approved;

    $response = array(
        'status'          => 'success',
        'published_posts' => (int) $published_posts,
        'total_comments'  => (int) $comments_count,
        'timestamp'       => current_time( 'timestamp' ),
    );

    return new WP_REST_Response( $response, 200 );
}
۳۶۴ 1405/06/29

غیرفعال کردن تغییر مقیاس خودکار تصاویر بزرگ در وردپرس (Disable Big Image Scaling)

با بازگرداندن `__return_false` به فیلتر `big_image_size_threshold`، تغییر سایز خودکار تصاویر بزرگ را کاملاً خاموش کنید.

پایین و بی‌خطر (Low Risk) مبتدی (Easy)
<?php
/**
 * غیرفعال‌سازی تغییر مقیاس خودکار تصاویر با ابعاد بیش از ۲۵۶۰ پیکسل در وردپرس
 */
add_filter( 'big_image_size_threshold', '__return_false' );
۳۴۴ 1405/06/29
PHP وردپرس (WordPress) Shortcode API

نحوه ساخت شورت‌کد سفارشی در وردپرس (WordPress Shortcode)

با تابع `add_shortcode` و استفاده صحیح از خروجی رشته‌ای (return به جای echo) شورت‌کد سفارشی بسازید.

پایین و بی‌خطر (Low Risk) متوسط (Medium)
<?php
/**
 * ساخت شورت‌کد باکس پیام و هشدار سفارشی
 * نحوه استفاده در متن: [bisco_alert type="success"]متن پیام شما[/bisco_alert]
 */
function bisco_alert_box_shortcode( $atts, $content = null ) {
    $atts = shortcode_atts( array(
        'type' => 'info', // پیش‌فرض: info, warning, success, error
    ), $atts, 'bisco_alert' );

    $type_class = sanitize_html_class( $atts['type'] );
    $output = '<div class="bisco-alert-box alert-' . esc_attr( $type_class ) . '">';
    $output .= do_shortcode( $content );
    $output .= '</div>';

    return $output;
}
add_shortcode( 'bisco_alert', 'bisco_alert_box_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 وردپرس (WordPress) Action Hook (add_image_size)

تعریف سایزهای اختصاصی تصاویر در وردپرس (Custom Image Size)

با تابع `add_image_size('custom-name', 800, 450, true);` سایز جدیدی با برش سخت ایجاد کرده و آن را در قالب با `the_post_thumbnail('custom-name')` فراخوانی کنید.

پایین و بی‌خطر (Low Risk) متوسط (Medium)
<?php
/**
 * ثبت ابعاد اختصاصی تصاویر متناسب با طراحی قالب
 */
function bisco_setup_custom_image_sizes() {
    // سایز کارت وبلاگ با نسبت تصویر ۱۶:۹ و برش دقیق
    add_image_size( 'bisco-blog-card', 640, 360, true );

    // سایز اسلایدر بزرگ صفحه اصلی
    add_image_size( 'bisco-hero-banner', 1200, 500, array( 'center', 'center' ) );
}
add_action( 'after_setup_theme', 'bisco_setup_custom_image_sizes' );

// نمایش سایز جدید در ویرایشگر وردپرس برای انتخاب دستی نویسندگان
add_filter( 'image_size_names_choose', function( $sizes ) {
    return array_merge( $sizes, array(
        'bisco-blog-card' => 'کارت وبلاگ (۶۴۰ در ۳۶۰)',
    ) );
} );
۱۲۲ 1405/06/29

سبد خرید شما

0 افزونه

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

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

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

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

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

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