فهرست مطالب
مرور کلی
فیلتر `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 مربوطه را بررسی کنید.