نحوه افزودن تب‌های سفارشی به بخش تاریخچه پروفایل کاربر/سرنخ در CRM

فهرست مطالب


مرور کلی

فیلتر `la24_history_user_profile` به افزونه‌ها اجازه می‌دهد تب‌های سفارشی به بخش **تاریخچه پروفایل** که در صفحات پروفایل کاربر و سرنخ نمایش داده می‌شود اضافه کنند. هر تب توسط یک کلاس Controller مجزا رندر می‌شود.

امضای هوک

php
apply_filters( 'la24_history_user_profile', array $tabs );
**نوع:** Filter **پارامترها:** `$tabs` (آرایه) — رجیستری تب‌های فعلی **بازگشتی:** آرایه — رجیستری تب‌های تغییریافته

ثبت تب تاریخچه پروفایل

php
add_filter( 'la24_history_user_profile', function ( $tabs ) {

    $tabs['my_activity_log'] = array(
        'priority' => 10,
        'name'     => __( 'لاگ فعالیت', 'my-crm-ext' ),
        'callback' => '\MyPlugin\Controllers\ActivityLogHistory',
    );

    return $tabs;
} );

فیلدهای تب

فیلدنوعتوضیح
کلید (کلید آرایه)stringشناسه منحصربه‌فرد تب
`priority`intترتیب نمایش (صعودی)؛ عدد کمتر = تب اول
`name`stringبرچسب تب که به کاربر نمایش داده می‌شود
`callback`stringنام کامل کلاس Controller (با namespace)

کلاس Controller تب

Controller از `BaseViewController` ارث می‌برد و `content()` را برای رندر بدنه تب پیاده‌سازی می‌کند:
php
<?php

namespace MyPlugin\Controllers;

use LoyalAxis\abstracts\BaseViewController;

defined( 'ABSPATH' ) || exit;

class ActivityLogHistory extends BaseViewController {

    public function content() {
        $user_id = (int) ( $_GET['id'] ?? 0 );
        if ( ! $user_id ) return;

        // بررسی دسترسی
        if ( ! la24_user_can( get_current_user_id(), 'my_crm_view_activity_log' ) ) {
            echo '<p>' . esc_html__( 'دسترسی ندارید.', 'my-crm-ext' ) . '</p>';
            return;
        }

        global $wpdb;
        $logs = $wpdb->get_results(
            $wpdb->prepare(
                "SELECT * FROM {$wpdb->prefix}my_activity_log WHERE user_id = %d ORDER BY created_at DESC LIMIT 50",
                $user_id
            )
        );

        foreach ( $logs as $log ) {
            echo '<div class="la24-history-item">';
            echo '<span class="date">' . esc_html( $log->created_at ) . '</span>';
            echo '<span class="action">' . esc_html( $log->action ) . '</span>';
            echo '</div>';
        }
    }
}

دسترسی به شناسه کاربر پروفایل

شناسه کاربر یا سرنخ پروفایل از طریق پارامتر query با نام `id` ارسال می‌شود:
php
$user_id = (int) ( $_GET['id'] ?? 0 );
if ( ! $user_id ) return; // محافظت: تب بدون پروفایل معتبر رندر شده
همیشه شناسه را قبل از انجام query های پایگاه‌داده اعتبارسنجی کنید. همیشه قبل از نمایش داده‌های حساس، Capability مربوطه را بررسی کنید.