سلام عرض خسته نباشید فراوان? امید مقدسی ام و امروز اومدم ی نکته مفید دیگه رو بهتون بگم?
خب، درسته که من فرانت کارم ولی خب ی سری نکته های بک رو هم از هم تیمی هام یادمیگیرم??
خلاصه بریم سر اصل مطلب
خیلی وقت ها توی توسعه قالب یا افزونه وردپرس، لازمه که ما ی فایل php بسازیم و یک سری کار هامون رو داخلش انجام بدیم. اگه قبلا این کارو کرده باشید می فهمید که اگر ما خارج از چهارچوبی که وردپرس برامون مشخص کرده اگر بخوایم فایلی ایجاد کنیم، دیگه به توابع یا خارجیش (function) هاش دسترسی نداریم و نمیتونیم ازشون استفاه کنیم.
راه حل
خب حالا راه حل چیه؟ کافیه این تیکه کدی که میگم رو بذارین اول فایلتون.
require_once(rtrim($_SERVER['DOCUMENT_ROOT'], '/') . '/wp-load.php');
خب حالا این کد چیکار میکنه؟ شما به اضافه کردن این کن عملا به وردپرس میگین که داخل این فایل هم لود شو. همین.
مثلا کجا کاربرد داره؟
خب مثلا من میخواستم لینک های دانلود که توسط افزونه edd هستن رو خودم دستی مخفی کنم که کاربر ها نتونن آدرس فایل ها یا نام فایل هارو بدست بیارن برای همین مجبور بودم ی فایل بسازم و با ی فرم آیدی محصول رو بفرستم به فایلم بعد داخل فایلم توسط توابع افزونه edd اطلاعات فایل رو بگیرم و توسط هدر خودم دانلودش کنم. کدشو میذارم که اگه خواستین استفاده کنید.
<?php require_once(rtrim($_SERVER['DOCUMENT_ROOT'], '/') . '/wp-load.php'); if (isset($_POST["secure_download"])) { $pid = $_POST["secure_download"]; $isFree = edd_is_free_download($pid); if ($isFree) { $files = edd_get_download_files($pid, null)[1]['file']; $contentType = mime_content_type_me(pathinfo($files)['basename']); header('Content-Type: ' . $contentType); header('Content-Disposition: attachment; filename=' . uniqid() . '.' . pathinfo($files)['extension']); header('Pragma: no-cache'); readfile($files); } else { echo 'شما دسترسی دانلود این فایل را ندارید.'; } } else { echo 'مشکلی در دانلود فایل بوجود آمده است.'; } function mime_content_type_me($filename) { $mime_types = array( 'txt' => 'text/plain', 'htm' => 'text/html', 'html' => 'text/html', 'php' => 'text/html', 'css' => 'text/css', 'js' => 'application/javascript', 'json' => 'application/json', 'xml' => 'application/xml', 'swf' => 'application/x-shockwave-flash', 'flv' => 'video/x-flv', // images 'png' => 'image/png', 'jpe' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'jpg' => 'image/jpeg', 'gif' => 'image/gif', 'bmp' => 'image/bmp', 'ico' => 'image/vnd.microsoft.icon', 'tiff' => 'image/tiff', 'tif' => 'image/tiff', 'svg' => 'image/svg+xml', 'svgz' => 'image/svg+xml', // archives 'zip' => 'application/zip', 'rar' => 'application/x-rar-compressed', 'exe' => 'application/x-msdownload', 'msi' => 'application/x-msdownload', 'cab' => 'application/vnd.ms-cab-compressed', // audio/video 'mp3' => 'audio/mpeg', 'qt' => 'video/quicktime', 'mov' => 'video/quicktime', // adobe 'pdf' => 'application/pdf', 'psd' => 'image/vnd.adobe.photoshop', 'ai' => 'application/postscript', 'eps' => 'application/postscript', 'ps' => 'application/postscript', // ms office 'doc' => 'application/msword', 'rtf' => 'application/rtf', 'xls' => 'application/vnd.ms-excel', 'ppt' => 'application/vnd.ms-powerpoint', // open office 'odt' => 'application/vnd.oasis.opendocument.text', 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', ); $ext = strtolower(array_pop(explode('.', $filename))); if (array_key_exists($ext, $mime_types)) { return $mime_types[$ext]; } elseif (function_exists('finfo_open')) { $finfo = finfo_open(FILEINFO_MIME); $mimetype = finfo_file($finfo, $filename); finfo_close($finfo); return $mimetype; } else { return 'application/octet-stream'; } }
امیدوارم که مفید باشه براتون❤️