'sodino_banner',
'plural' => 'sodino_banners',
'ajax' => false,
]);
$this->repository = $repository;
}
public function get_columns() {
return [
'cb' => '',
'title' => __('عنوان', 'sodino'),
'position' => __('محل نمایش', 'sodino'),
'display_type' => __('نوع نمایش', 'sodino'),
'schedule' => __('زمانبندی', 'sodino'),
'status' => __('وضعیت', 'sodino'),
'stats' => __('آمار', 'sodino'),
'actions' => __('عملیات', 'sodino'),
];
}
protected function get_sortable_columns() {
return [
'priority' => ['priority', true],
'title' => ['title', true],
];
}
protected function column_cb($item) {
return sprintf('', $item->id);
}
public function get_bulk_actions() {
return [
'delete' => __('حذف گروهی', 'sodino'),
];
}
public function column_title($item) {
$edit_url = admin_url('admin.php?page=sodino-add-banner&action=edit&id=' . $item->id);
return sprintf('%s', esc_url($edit_url), esc_html($item->title));
}
public function column_position($item) {
$map = [
'top' => __('بالای سایت', 'sodino'),
'middle' => __('وسط محتوا', 'sodino'),
'bottom' => __('پایین', 'sodino'),
'product_page' => __('صفحه محصول', 'sodino'),
'cart' => __('سبد خرید', 'sodino'),
];
return $map[$item->position] ?? __('نامشخص', 'sodino');
}
public function column_display_type($item) {
$map = [
'inline' => __('درون صفحه', 'sodino'),
'popup' => __('پاپآپ', 'sodino'),
'floating_bar' => __('نوار شناور', 'sodino'),
];
return $map[$item->display_type] ?? __('نامشخص', 'sodino');
}
public function column_schedule($item) {
if (!empty($item->start_time) || !empty($item->end_time)) {
$start = $item->start_time ? date_i18n('Y/m/d H:i', strtotime($item->start_time)) : __('بدون شروع', 'sodino');
$end = $item->end_time ? date_i18n('Y/m/d H:i', strtotime($item->end_time)) : __('بدون پایان', 'sodino');
return sprintf('%s
%s', esc_html($start), esc_html($end));
}
return __('بدون محدودیت زمانی', 'sodino');
}
public function column_status($item) {
return $item->status ? __('فعال', 'sodino') : __('غیرفعال', 'sodino');
}
public function column_stats($item) {
$ctr = $item->impressions > 0 ? round(($item->clicks / $item->impressions) * 100, 2) : 0;
return sprintf('
%s: %s
%s: %s
CTR: %s%%