'attachment',
'post_status' => 'any',
'numberposts' => -1,
));
$deleted_count = 0; // Biến đếm số lượng hình đã xóa
foreach ($attachments as $attachment) {
if ($deleted_count >= $limit) { // Kiểm tra xem đã đạt tới giới hạn chưa
break; // Nếu đã đạt tới giới hạn thì thoát khỏi vòng lặp
}
$attachment_id = $attachment->ID;
$deleted_count += foxtool_delete_all_thumbnails($attachment_id, $thumbnail_name);
}
return $deleted_count;
}
function foxtool_delete_all_thumbnails($attachment_id, $thumbnail_name) {
$deleted_count = 0; // Biến đếm số lượng hình đã xóa
$metadata = wp_get_attachment_metadata($attachment_id);
if (isset($metadata['sizes'])) {
$image_sizes = $metadata['sizes'];
foreach ($image_sizes as $size => $data) {
if ($size === $thumbnail_name) { // Kiểm tra tên của hình thu nhỏ
$file_path = wp_get_upload_dir()['basedir'] . '/' . dirname($metadata['file']) . '/' . $data['file'];
if (file_exists($file_path)) {
unlink($file_path);
$deleted_count++; // Tăng biến đếm khi xóa hình thành công
}
unset($metadata['sizes'][$size]);
}
}
wp_update_attachment_metadata($attachment_id, $metadata);
}
return $deleted_count; // Trả về số lượng hình đã xóa
}
// ajax xoa file crop
function foxtool_delete_images_by_size_callback() {
check_ajax_referer('foxtool_delete_crop_nonce', 'security');
if (!current_user_can('manage_options')){
wp_die(__('Insufficient permissions', 'foxtool'));
}
$size_name = isset($_POST['size']) ? $_POST['size'] : '';
if ($size_name !== '') {
$limit = 500; // Giới hạn số lượng hình muốn xóa
$deleted_count = foxtool_delete_thumbnails($size_name, $limit);
wp_send_json_success(__('Deleted', 'foxtool') .' '. $size_name . ': ' . $deleted_count . ' ' . __('images', 'foxtool'));
} else {
wp_send_json_error(__('No size', 'foxtool'));
}
}
add_action('wp_ajax_foxtool_delete_images_by_size', 'foxtool_delete_images_by_size_callback');
# han che tai len file
if (isset($foxtool_options['media-up2']) && !empty($foxtool_options['media-up21'])){
function foxtool_change_upload_size(){
global $foxtool_options;
$mlimit_mb = !empty($foxtool_options['media-up21']) ? $foxtool_options['media-up21'] : 1; // Giới hạn mặc định 1MB
$mlimit_kb = $mlimit_mb * 1024 * 1024;
return $mlimit_kb;
}
add_filter('upload_size_limit', 'foxtool_change_upload_size');
}
# Cho phép tải lên file SVG
if(isset($foxtool_options['media-up3'])){
function foxtool_allow_svg_upload( $mimes ) {
$mimes['svg'] = 'image/svg+xml';
return $mimes;
}
add_filter( 'upload_mimes', 'foxtool_allow_svg_upload' );
function foxtool_fix_svg_thumb_display() {
echo '
';
}
add_action( 'admin_head', 'foxtool_fix_svg_thumb_display' );
}
# cho phep tai len anh jfif
if(isset($foxtool_options['media-up4'])){
function foxtool_allow_jfif_upload( $mime_types ) {
$mime_types['jfif'] = 'image/jfif';
$mime_types['jpe'] = 'image/jpe';
return $mime_types;
}
add_filter( 'upload_mimes', 'foxtool_allow_jfif_upload' );
}
# chuyen anh 8bit qua 32bit de xu ly
$foxtool_keypng = [
'media-zip1',
'media-webp1',
'media-avif2',
'media-zip2',
'media-logo1'
];
if (array_filter($foxtool_keypng, fn($key) => isset($foxtool_options[$key]))) {
function foxtool_png_8bit_to_32bit($file) {
$file_type = $file['type'];
if ($file_type === 'image/png') {
$image = imagecreatefrompng($file['tmp_name']);
$bit_depth = imageistruecolor($image) ? 32 : 8;
if ($bit_depth === 8) {
$width = imagesx($image);
$height = imagesy($image);
$image_32bit = imagecreatetruecolor($width, $height);
imagealphablending($image_32bit, false);
imagesavealpha($image_32bit, true);
$transparent_index = imagecolortransparent($image);
if ($transparent_index >= 0) {
$transparent_color = imagecolorsforindex($image, $transparent_index);
$alpha_color = imagecolorallocatealpha(
$image_32bit,
$transparent_color['red'],
$transparent_color['green'],
$transparent_color['blue'],
127
);
imagefill($image_32bit, 0, 0, $alpha_color);
} else {
$alpha_color = imagecolorallocatealpha($image_32bit, 0, 0, 0, 127);
imagefill($image_32bit, 0, 0, $alpha_color);
}
imagecopy($image_32bit, $image, 0, 0, 0, 0, $width, $height);
imagepng($image_32bit, $file['tmp_name']);
imagedestroy($image_32bit);
}
imagedestroy($image);
}
return $file;
}
add_filter('wp_handle_upload_prefilter', 'foxtool_png_8bit_to_32bit');
}
# nén hình anh jpg khi tai len
if(isset($foxtool_options['media-zip1']) && (!isset($foxtool_options['media-webp1']) && !isset($foxtool_options['media-avif2']))){
function foxtool_image_compression($file) {
global $foxtool_options;
$image_type = exif_imagetype($file['tmp_name']);
if ($image_type === IMAGETYPE_JPEG) {
$compression_quality = !empty($foxtool_options['media-zip11']) ? $foxtool_options['media-zip11'] : 60; // Mức nén
$image = imagecreatefromjpeg($file['tmp_name']);
imagejpeg($image, $file['tmp_name'], $compression_quality);
imagedestroy($image);
}
// chuyển png sang jpg
else if ($image_type === IMAGETYPE_PNG && isset($foxtool_options['media-zip12'])) {
$image = imagecreatefrompng($file['tmp_name']);
$bit_depth = imageistruecolor($image) ? 32 : 8;
if ($bit_depth !== 8) {
$compression_quality = !empty($foxtool_options['media-zip11']) ? $foxtool_options['media-zip11'] : 60; // Mức nén
imagejpeg($image, $file['tmp_name'], $compression_quality);
}
imagedestroy($image);
}
return $file;
}
add_filter('wp_handle_upload_prefilter', 'foxtool_image_compression');
}
# chuyen anh jpg, png sang webp
function foxtool_convert_to_webp($upload) {
$image_path = $upload['file'];
global $foxtool_options;
$compression_quality = !empty($foxtool_options['media-webp11']) ? $foxtool_options['media-webp11'] : 60; // Mức nén
$supported_mime_types = array(
'image/jpeg' => 'jpg',
'image/png' => 'png',
);
$image_info = getimagesize($image_path);
if ($image_info !== false && array_key_exists($image_info['mime'], $supported_mime_types)) {
$image = imagecreatefromstring(file_get_contents($image_path));
if ($image) {
// Kiểm tra xem ảnh có phải là truecolor hay không
if (imageistruecolor($image)) {
// Tạo tên file WebP ban đầu
$webp_path = preg_replace('/\.(jpg|jpeg|png)$/', '.webp', $image_path);
// Tách đường dẫn thư mục và tên file
$upload_dir = wp_upload_dir();
$file_dir = dirname($webp_path);
$file_name = basename($webp_path);
// Sử dụng wp_unique_filename để đảm bảo tên file là duy nhất
$unique_file_name = wp_unique_filename($upload_dir['path'], $file_name);
$unique_webp_path = $file_dir . '/' . $unique_file_name;
imagewebp($image, $unique_webp_path, $compression_quality);
$upload['file'] = $unique_webp_path;
$upload['type'] = 'image/webp';
// xóa ảnh góc
unlink($image_path);
} else {
// Nếu là ảnh 8-bit, bỏ qua không nén
$upload['file'] = $image_path;
$upload['type'] = $image_info['mime'];
}
}
}
return $upload;
}
if(isset($foxtool_options['media-webp1']) && !isset($foxtool_options['media-avif2'])){
function foxtool_convert_to_webp_upload($upload) {
$upload = foxtool_convert_to_webp($upload);
return $upload;
}
add_filter('wp_handle_upload', 'foxtool_convert_to_webp_upload');
}
# chuyen anh jpg, png sang avif
// cho phep avif wp
if(isset($foxtool_options['media-avif1'])){
function foxtool_add_avif_support( $mime_types ) {
$mime_types['avif'] = 'image/avif';
$mime_types['avifs'] = 'image/avif-sequence';
return $mime_types;
}
add_filter( 'upload_mimes', 'foxtool_add_avif_support' );
// check GD ho tro avif
function check_gd_avif_support() {
if (function_exists('gd_info')) {
$gd_info = gd_info();
if (!isset($gd_info['AVIF Support']) || !$gd_info['AVIF Support']) {
echo '
'. __('GD Library does not support AVIF images', 'foxtool'). '
';
}
} else {
echo ''. __('GD Library is not installed', 'foxtool'). '
';
}
}
add_action('admin_notices', 'check_gd_avif_support');
}
function foxtool_convert_to_avif($upload) {
if (!function_exists('imageavif')) {
return $upload;
}
$image_path = $upload['file'];
global $foxtool_options;
$compression_quality = !empty($foxtool_options['media-avif21']) ? $foxtool_options['media-avif21'] : 60; // mức nén
$supported_mime_types = array(
'image/jpeg' => 'jpg',
'image/png' => 'png',
);
$image_info = getimagesize($image_path);
if ($image_info !== false && array_key_exists($image_info['mime'], $supported_mime_types)) {
if (function_exists('imagecreatefromavif')) {
$image = imagecreatefromstring(file_get_contents($image_path));
if ($image) {
if (imageistruecolor($image)) {
// Tạo tên file AVIF ban đầu
$avif_path = preg_replace('/\.(jpg|jpeg|png)$/', '.avif', $image_path);
// Tách đường dẫn thư mục và tên file
$upload_dir = wp_upload_dir();
$file_dir = dirname($avif_path);
$file_name = basename($avif_path);
// Sử dụng wp_unique_filename để đảm bảo tên file là duy nhất
$unique_file_name = wp_unique_filename($upload_dir['path'], $file_name);
$unique_avif_path = $file_dir . '/' . $unique_file_name;
imageavif($image, $unique_avif_path, $compression_quality);
$upload['file'] = $unique_avif_path;
$upload['type'] = 'image/avif';
// Xóa ảnh gốc
unlink($image_path);
} else {
// Nếu là ảnh 8-bit, bỏ qua không nén
$upload['file'] = $image_path;
$upload['type'] = $image_info['mime'];
}
}
}
}
return $upload;
}
if(isset($foxtool_options['media-avif2'])){
function foxtool_convert_to_avif_upload($upload) {
$upload = foxtool_convert_to_avif($upload);
return $upload;
}
add_filter('wp_handle_upload', 'foxtool_convert_to_avif_upload');
}
# giới hạn kích thước ảnh png khi tải lên
if(isset($foxtool_options['media-zip2'])){
function foxtool_image_resize($file) {
global $foxtool_options;
$image_type = exif_imagetype($file['tmp_name']);
$allowed_formats = array(
IMAGETYPE_PNG,
IMAGETYPE_JPEG,
IMAGETYPE_WEBP,
);
// Check for AVIF support
if (function_exists('imagecreatefromavif') && function_exists('imageavif')) {
$allowed_formats[] = IMAGETYPE_AVIF;
}
if (in_array($image_type, $allowed_formats)) {
$image = null;
if ($image_type === IMAGETYPE_PNG) {
$image = imagecreatefrompng($file['tmp_name']);
} elseif ($image_type === IMAGETYPE_JPEG) {
$image = imagecreatefromjpeg($file['tmp_name']);
} elseif ($image_type === IMAGETYPE_WEBP) {
$image = imagecreatefromwebp($file['tmp_name']);
} elseif ($image_type === IMAGETYPE_AVIF) {
$image = imagecreatefromavif($file['tmp_name']);
}
if ($image) {
// bo qua neu anh 8bit
if (!imageistruecolor($image)) {
imagedestroy($image);
return $file;
}
$width = imagesx($image);
$height = imagesy($image);
$max_width = !empty($foxtool_options['media-zip21']) ? $foxtool_options['media-zip21'] : $width;
$max_height = !empty($foxtool_options['media-zip22']) ? $foxtool_options['media-zip22'] : $height;
// bo qua neu anh có kich thuoc nho hon
if ($width <= $max_width && $height <= $max_height) {
imagedestroy($image);
return $file;
}
$new_width = $width;
$new_height = $height;
if ($width > $max_width || $height > $max_height) {
$ratio = min($max_width / $width, $max_height / $height);
$new_width = intval($width * $ratio);
$new_height = intval($height * $ratio);
}
$new_image = imagecreatetruecolor($new_width, $new_height);
if ($image_type === IMAGETYPE_PNG) {
imagealphablending($new_image, false);
imagesavealpha($new_image, true);
$transparent = imagecolorallocatealpha($new_image, 255, 255, 255, 127);
imagefilledrectangle($new_image, 0, 0, $new_width, $new_height, $transparent);
imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagepng($new_image, $file['tmp_name']);
} elseif ($image_type === IMAGETYPE_JPEG) {
imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($new_image, $file['tmp_name']);
} elseif ($image_type === IMAGETYPE_WEBP) {
imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagewebp($new_image, $file['tmp_name']);
} elseif ($image_type === IMAGETYPE_AVIF) {
imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imageavif($new_image, $file['tmp_name']);
}
imagedestroy($image);
imagedestroy($new_image);
}
}
return $file;
}
add_filter('wp_handle_upload_prefilter', 'foxtool_image_resize');
}
# Hàm thêm watermark cho hinh anh tai len
if(isset($foxtool_options['media-logo1'])){
function foxtool_add_watermark($attachment_id) {
global $foxtool_options;
if (empty($foxtool_options['media-logo10']) && empty($foxtool_options['media-logo11'])) {return;}
$logo = '';
$logotext = '';
if(!empty($foxtool_options['media-logo11'])) {
$logo = $foxtool_options['media-logo11'];
// Kiểm tra xem ảnh logo có thể truy cập được hay không
$headers = @get_headers($logo);
if(!$headers || strpos($headers[0], '200') === false) {
return;
}
// Kiểm tra phần mở rộng của file ảnh
$extension = pathinfo($logo, PATHINFO_EXTENSION);
if (!in_array($extension, ['png', 'jpg', 'jpeg'])) {
return;
}
} elseif (!empty($foxtool_options['media-logo10'])) {
$logotext = $foxtool_options['media-logo10'];
}
$watermark_path = $logo;
$attachment = get_post($attachment_id);
$file = get_attached_file($attachment_id);
$mime_type = get_post_mime_type($attachment);
if (strpos($mime_type, 'image') !== false) {
if (!preg_match('/image\/(png|jpeg|jpg|webp|avif)/', $mime_type)) {return;}
switch ($mime_type) {
case 'image/webp':
$image = @imagecreatefromwebp($file);
break;
case 'image/jpeg':
case 'image/jpg':
$image = @imagecreatefromjpeg($file);
break;
case 'image/png':
$image = @imagecreatefrompng($file);
break;
case 'image/avif':
if (function_exists('imagecreatefromavif') && function_exists('imageavif')) {
$image = @imagecreatefromavif($file);
} else {
return;
}
break;
default:
return;
}
if ($image === false) {return;}
// Kiểm tra xem ảnh có dưới 12-bit không
if (function_exists('imageistruecolor') && !imageistruecolor($image)) {return;}
$image_width = imagesx($image);
$image_height = imagesy($image);
// neu anh cao nho hon 200 thi khong them logo
if ($image_height < 200) {return;}
if (!empty($logotext)) {
$font_file = FOXTOOL_DIR . 'font/logo.ttf';
$font_size = 50;
$text = $logotext;
$bbox = imagettfbbox($font_size, 0, $font_file, $text);
$text_width = $bbox[2] - $bbox[0];
$text_height = $bbox[1] - $bbox[7];
$watermark_width = $text_width + 30;
$watermark_height = $text_height + 30;
$watermark = imagecreatetruecolor($watermark_width, $watermark_height);
imagealphablending($watermark, false);
imagesavealpha($watermark, true);
$transparent_color = imagecolorallocatealpha($watermark, 0, 0, 0, 127);
imagefilledrectangle($watermark, 0, 0, $watermark_width, $watermark_height, $transparent_color);
$hex_color = !empty($foxtool_options['media-logo10-c1']) ? $foxtool_options['media-logo10-c1'] : '#999999';
list($r, $g, $b) = sscanf($hex_color, "#%02x%02x%02x");
$text_color = imagecolorallocate($watermark, $r, $g, $b);
$x = round(($watermark_width - $text_width) / 2);
$y = round(($watermark_height - $text_height) / 2 + $text_height);
imagettftext($watermark, $font_size, 0, $x, $y, $text_color, $font_file, $text);
} else {
$watermark = imagecreatefrompng($watermark_path);
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
}
if (!empty($foxtool_options['media-logo13'])) {
$ratio = $foxtool_options['media-logo13'];
$watermark_ratio = $ratio / 100;
$new_width = round($image_width * $watermark_ratio);
$new_height = round(($watermark_height / $watermark_width) * $new_width);
$watermark = imagescale($watermark, $new_width, $new_height);
$watermark_width = $new_width;
$watermark_height = $new_height;
}
if(isset($foxtool_options['media-logo12']) && $foxtool_options['media-logo12'] == 'Center'){
// chinh giua khung hình
$watermark_pos_x = intval(($image_width - $watermark_width) / 2);
$watermark_pos_y = intval(($image_height - $watermark_height) / 2);
}
elseif (isset($foxtool_options['media-logo12']) && $foxtool_options['media-logo12'] == 'Top Left'){
// goc tren trai
$watermark_pos_x = 10;
$watermark_pos_y = 10;
}
elseif (isset($foxtool_options['media-logo12']) && $foxtool_options['media-logo12'] == 'Top Right'){
// goc tren phai
$watermark_pos_x = $image_width - $watermark_width - 10;
$watermark_pos_y = 10;
}
elseif (isset($foxtool_options['media-logo12']) && $foxtool_options['media-logo12'] == 'Bottom Left'){
// goc duoi trai
$watermark_pos_x = 10;
$watermark_pos_y = $image_height - $watermark_height - 10;
}
elseif (isset($foxtool_options['media-logo12']) && $foxtool_options['media-logo12'] == 'Bottom Right'){
// goc duoi phai
$watermark_pos_x = $image_width - $watermark_width - 10;
$watermark_pos_y = $image_height - $watermark_height - 10;
}
elseif (isset($foxtool_options['media-logo12']) && $foxtool_options['media-logo12'] == 'Top Center'){
$watermark_pos_x = intval(($image_width - $watermark_width) / 2);
$watermark_pos_y = 10;
}
elseif (isset($foxtool_options['media-logo12']) && $foxtool_options['media-logo12'] == 'Bottom Center'){
$watermark_pos_x = intval(($image_width - $watermark_width) / 2);
$watermark_pos_y = $image_height - $watermark_height - 10;
}
else {
// chinh giua khung hình
$watermark_pos_x = intval(($image_width - $watermark_width) / 2);
$watermark_pos_y = intval(($image_height - $watermark_height) / 2);
}
// trong
if (!empty($foxtool_options['media-logo14']) && $foxtool_options['media-logo14'] != 100) {
$opacity = $foxtool_options['media-logo14'];
$watermark_resized = imagecreatetruecolor($watermark_width, $watermark_height);
imagealphablending($watermark_resized, false);
imagesavealpha($watermark_resized, true);
$transparent = imagecolorallocatealpha($watermark_resized, 0, 0, 0, 127);
imagefilledrectangle($watermark_resized, 0, 0, $watermark_width, $watermark_height, $transparent);
imagecopy($watermark_resized, $watermark, 0, 0, 0, 0, $watermark_width, $watermark_height);
$watermark_width = intval($watermark_width);
$watermark_height = intval($watermark_height);
for ($x = 0; $x < $watermark_width; $x++) {
for ($y = 0; $y < $watermark_height; $y++) {
if ($x >= 0 && $x < imagesx($watermark_resized) && $y >= 0 && $y < imagesy($watermark_resized)) {
$color = imagecolorsforindex($watermark_resized, imagecolorat($watermark_resized, $x, $y));
$alpha = min(127, intval($color['alpha'] + (127 * (100 - $opacity) / 100)));
$new_color = imagecolorallocatealpha($watermark_resized, $color['red'], $color['green'], $color['blue'], $alpha);
imagesetpixel($watermark_resized, $x, $y, $new_color);
}
}
}
imagecopy($image, $watermark_resized, $watermark_pos_x, $watermark_pos_y, 0, 0, $watermark_width, $watermark_height);
imagedestroy($watermark_resized);
} else {
imagecopy($image, $watermark, $watermark_pos_x, $watermark_pos_y, 0, 0, $watermark_width, $watermark_height);
}
// Lưu hình ảnh mới đã thêm watermark
if ($mime_type === 'image/webp') {
imagewebp($image, $file);
} elseif ($mime_type == 'image/jpeg') {
imagejpeg($image, $file);
} elseif ($mime_type == 'image/png') {
imagepng($image, $file);
} elseif ($mime_type == 'image/avif'){
imageavif($image, $file);
}
}
}
add_action('add_attachment', 'foxtool_add_watermark');
}
# xóa ảnh 404 trong media
function foxtool_delete_404_attachments() {
check_ajax_referer('foxtool_media_del', 'security');
if (!current_user_can('manage_options')){
wp_die(__('Insufficient permissions', 'foxtool'));
}
$number = 200;
$deletedCount = 0;
$attachments = get_posts(array(
'post_type' => 'attachment',
'numberposts' => $number,
'fields' => 'ids'
));
if ($attachments) {
foreach ($attachments as $attachmentID) {
$file_path = get_attached_file($attachmentID);
if ($file_path && !file_exists($file_path)) {
wp_delete_attachment($attachmentID, true);
$deletedCount++;
}
}
}
wp_send_json_success(array('deleted_count' => $deletedCount));
}
add_action('wp_ajax_foxtool_delete_media', 'foxtool_delete_404_attachments');
// add media adminbar
function foxtool_watermark_checkbox_adminbar($wp_admin_bar) {
if ( !is_admin() || !current_user_can('manage_options') ) {
return;
}
$foxtool_options = get_option('foxtool_settings', array());
// Lấy trạng thái của các tùy chọn watermark
$watermark_enabled1 = isset($foxtool_options['media-zip1']) && $foxtool_options['media-zip1'] == 1;
$watermark_enabled2 = isset($foxtool_options['media-webp1']) && $foxtool_options['media-webp1'] == 1;
$watermark_enabled3 = isset($foxtool_options['media-avif1']) && $foxtool_options['media-avif1'] == 1;
$watermark_enabled4 = isset($foxtool_options['media-avif2']) && $foxtool_options['media-avif2'] == 1;
$watermark_enabled5 = isset($foxtool_options['media-zip2']) && $foxtool_options['media-zip2'] == 1;
$watermark_enabled6 = isset($foxtool_options['media-logo1']) && $foxtool_options['media-logo1'] == 1;
// Tạo node chính
$args = array(
'id' => 'foxtool-adw',
'title' => ' '. __('Media', 'foxtool'),
'href' => '#',
);
$wp_admin_bar->add_node($args);
// Tạo checkbox 1
$checkbox_args1 = array(
'id' => 'foxtool-awc1',
'title' => sprintf(
'',
$watermark_enabled1 ? 'checked="checked"' : ''
),
'parent' => 'foxtool-adw',
);
$wp_admin_bar->add_node($checkbox_args1);
// Tạo checkbox 2
$checkbox_args2 = array(
'id' => 'foxtool-awc2',
'title' => sprintf(
'',
$watermark_enabled2 ? 'checked="checked"' : ''
),
'parent' => 'foxtool-adw',
);
$wp_admin_bar->add_node($checkbox_args2);
// Tạo checkbox 3
$checkbox_args3 = array(
'id' => 'foxtool-awc3',
'title' => sprintf(
'',
$watermark_enabled3 ? 'checked="checked"' : ''
),
'parent' => 'foxtool-adw',
);
$wp_admin_bar->add_node($checkbox_args3);
// Tạo checkbox 4
$checkbox_args4 = array(
'id' => 'foxtool-awc4',
'title' => sprintf(
'',
$watermark_enabled4 ? 'checked="checked"' : ''
),
'parent' => 'foxtool-adw',
);
$wp_admin_bar->add_node($checkbox_args4);
// Tạo checkbox 5
$checkbox_args5 = array(
'id' => 'foxtool-awc5',
'title' => sprintf(
'',
$watermark_enabled5 ? 'checked="checked"' : ''
),
'parent' => 'foxtool-adw',
);
$wp_admin_bar->add_node($checkbox_args5);
// Tạo checkbox 6
$checkbox_args6 = array(
'id' => 'foxtool-awc6',
'title' => sprintf(
'',
$watermark_enabled6 ? 'checked="checked"' : ''
),
'parent' => 'foxtool-adw',
);
$wp_admin_bar->add_node($checkbox_args6);
}
add_action('admin_bar_menu', 'foxtool_watermark_checkbox_adminbar', 100);
function foxtool_handletoggle_watermark() {
if ( !isset($_POST['nonce']) || !wp_verify_nonce($_POST['nonce'], 'foxtool_watermark_nonce') ) {
wp_send_json_error('Invalid nonce');
}
if ( isset($_POST['enabled'], $_POST['option_key']) ) {
$enabled = sanitize_text_field($_POST['enabled']);
$option_key = sanitize_text_field($_POST['option_key']);
$foxtool_options = get_option('foxtool_settings', array());
$foxtool_options[$option_key] = $enabled === 'true' ? 1 : NULL;
update_option('foxtool_settings', $foxtool_options);
wp_send_json_success('Option updated');
}
wp_send_json_error('Missing parameters');
}
add_action('wp_ajax_toggle_watermark', 'foxtool_handletoggle_watermark');
function foxtool_watermark_admin_footer() { ?>