آموزش ایجاد امکان آپلود تصویر برای کاربر مشارکت کننده در وردپرس در آقای وردپرس

با سلام خدمت کاربران عزیز و محترم آقای وردپرس
امروز با آموزش ایجاد امکان آپلود تصویر برای کاربر مشارکت کننده در وردپرس در خدمت شما هستم  که امیدوارم ازش خوشتون بیاد.

mrwp

مشکل آپلود در وردپرس برای کاربران از کجا است ؟

همانطور که می دانید ما برای اینکه قبل از انتشار عمومی نوشته های ارسال شده به سایت توسط کاربران ، بتوانیم نگاهی به آن ها بکنیم و همچنین در صورتی که نیاز به ویرایش داشته باشند آن ها را ویرایش کنیم در قسمت نقش پیش‌فرض کاربر تازه که از طریق پیشخوان وردپرس > تنظیمات > همگانی قابل دسترس است گزینه مشارکت‌کننده ( Contributor ) را انتخاب می کنیم که این امر باعث می‌شود که کاربرانی که تازه در سایت ما برای ارسال پست مهمان عضو شده‌اند در سیستم وردپرس به عنوان یک کاربر مشارکت کننده شناخته شوند و مجوزهای دستری خاص این نوع کاربری برای آن ها اعمال می‌شود.

در سیستم وردپرس به صورت پیش فرض برای هر نوع از کاربران دسترسی ها و مجوزهای خاصی وجود دارد که در مطلب جدول نقش کاربر در وردپرس با آن ها آشنا شده ایم و در این جدول کاربران مشارکت کننده امکان آپلود فایل جدید را ندارند و به همین دلیل است که کاربران سایت ما در هنگام ارسال نوشته به سایت نمی توانند از امکان بارگذاری/گذاشتن در بالای ویرایشگر متن وردپرس برای آپلود تصاویر مورد نظر در نوشته های خود استفاده کنند.

چگونگی حل مشکل آپلود تصویر برای کاربران در وردپرس

برای حل این مشکل در وردپرس می توانید از افزونه های مختلفی که برای ویرایش جدول دسترسی کاربران در وردپرس ساخته شده است استفاده کنید که با جستجوی کوچکی در منبع افزونه های وردپرس با صدها نوع از این افزونه ها روبرو می شوید. اما تمامی این افزونه ها برای تغییرات در جدول دسترسی و مجوز کاربری وردپرس از هک وردپرس و ترفندهای ساده ای استفاده می کنند و بهتر است که خود با کمی کد نویسی این امکان را به سایت خود اضافه کنیم و از استفاده بی مورد از این افزونه ها خودداری کنیم اگر مشکل ما تنها ایجاد امکان آپلود تصاویر برای کاربران مشارکت کننده است. برای این کار تنها کافی است تکه کد زیر را به آخر فایل functions.php که در شاخه پوسته وردپرس شما موجود است اضافه کنید.

نقل قول: <?php if ( current_user_can(‘contributor’) && !current_user_can(‘upload_files’) )
add_action(‘admin_init’, ‘allow_upload_user’);

function allow_upload_user() {
$var1 = get_role(‘contributor’);
$var1->add_cap(‘upload_files’);
} ?>

در صورتی که در شاخه پوسته سایت وردپرسی خود ( مسیر wp-content/themes/name-theme ) وجود نداشت می توانید فایل جدیدی با این نام در این شاخه ایجاد کنید و سپس کدهای بالا را به آن اضافه کنید. توجه داشته باشید که در کدهای بالا تنها با استفاده از یک قلاب ( Hook ) که وظیفه آن اضافه کردن و یا ویرایش مقادیری در ساختار کلی بخش های وردپرس است امکان آپلود تصاویر را به کاربران مشارکت کننده در وردپرس داده ایم که البته این کار با استفاده از تابع add_action در صورتی که کاربر یک مشارکت کننده بود و یا اینکه امکان آپلود تصویر را نداشت انجام می شود.

آپلود در وردپرس توسط کاربران امنیت سایت را به خطر می اندازد ؟

همیشه اضافه کردن امکانات بیشتر و تعیین مجوزهای دسترسی برای آزاد تر برای کاربران عمومی سایت مشکلاتی را برای سایت های مختلف ایجاد کرده است اما خوشحالیم بگوییم به این دلیل که شما از وردپرس برای راه اندازی و انتشار سایت خود استفاده می کنید ارائه این امکان به کاربران سایت خود توسط وردپرس هیچگونه خطر امنیتی را برای سایت شما به همراه ندارد و همانطور که می بینید خود سایت تورتک نیز این امکان را در سایت خود برای کاربرانی که قصد ارسال پست مهمان را دارند در دسترس گذاشته است.

اگر می خواهید دلیل این امر را بدانید باید بگوییم که قسمت آپلود وردپرس که از طریق دکمه افزودن پرونده‌های چند‌رسانه‌ای در بالای ویرایشگر متن وردپرس قابل دسترس است با استفاده از ترفندهای گوناگونی کاملاً امن شده است و کاربران سایت شما نمی توانند هیچگونه حرکت مخربی را با استفاده از آن در سایت شما بکنند. تنها در صورتی که شما از هاست با فضای ذخیره سازی بسیار محدودی استفاده می کنید ممکن است مایل نباشید که کاربران سایت شما بتوانند برای استفاده از تصاویر در نوشته های خود و یا دیگر پروندهای چند رسانه ای مانند فایل های صوتی و یا کتاب های الکترونیک PDF ، در سایت شما امکان آپلود را نداشته باشند.

تغییر اندازه حداکثر حجم فایل ها در هنگام آپلود در وردپرس

یکی دیگر از مشکلاتی که شاید در هنگام آپلود فایل در وردپرس به آن بر خورده باشید این است که در هنگامی که کاربران و یا خود شما قصد داشته‌اید که یک فایل مثلاً PDF را که حجم بیشتر از ۳۰ مگابایت داشته است را آپلود کنید با پیغام خطا روبرو شده اید و موفق به انجام این کار نشده اید. برای رفع محدودیت ۳۰ مگابایتی آپلود در وردپرس خیلی ساده می توانید با قرار دادن کدهای زیر در فایل .htaccess که در شاخه اصلی ( root ) هاست خود می توانید آن را پیدا کنید مقدار حداکثر حجم فایل ها در هنگام آپلود را تغییر دهید.

php_value upload_max_filesize 50M
php_value post_max_size 50M
php_value memory_limit 50M

تنها کافی است بجای ۵۰M در کدهای بالا حداکثر حجم فایل های قایل آپلود در سایت وردپرسی خود را وارد کنید. از این ترفند همچنین می توانید در صورتی که هاست شما فضای ذخیره سازی کمی را دارد استفاده کنید تا مثلاً به کاربران اجازه ندهید تا فایل های سنگین را در سایت شما آپلود کنند.

 

موفق و سربلند باشید.
بدرود.

منتظر نظرات سازندتون هستم نظر یادتون نره!!!

تیم آقای وردپرس

تیم تولید محتوا و پشتیبانی سایت آقای وردپرس

این پست دارای 6 نظر است

  1. سلام
    دقیقا دنبال یه همچین مطلبی بودم ممنون از زحماتتون …
    من و تیم کاریمون هم اهل اصفهان هستیم و اینجا زندگی میکنیم خوشحالم که آقای وردپرس اهل شهر ما و همینجا سکونت داره .
    موفق و باشین … بیش از پیش !

  2. سلام آقای وردپرس عزیز
    این راه حلی که ارائه کرده بودید را امتحان کردم ولی بعد از اضافه کردن کد به فایلی که گفته بودید هیچ تغییری در سطح مشارکت کننده ایجاد نشد و رسانه هنوز غیر قابل دسترسی ست در این سطح .
    به نظرتون مشکل چیه ؟
    چیکار باید بکنم ؟
    از افزونه های بسیاری برای این کار هم استفاده کردم ولی اونها هم نتونستن چیزی به این سطح از دسترسی اضافه کنن مطلب شما رو که دیدم خیلی خوشحال شدم ولی خب متاسفانه کد شما هم جواب نداد .
    میشه کمکم کنید ؟

  3. سید محمد جواد نبوی

    سلام
    من می خوام یه سایت درباره ی چند بازی تخصصی راه اندازی کنمومی خوام به گونه ای باشه که صفحه ی اول اون چند بازی قرار بگیره که با کلیک به زیر مجموعه سایت بره
    مثلا: اگه سایت من http://www.game.ir هست با کلیک به روی زیر مجموعه هاش به اون لینک بره مثلا:http://www.warcraft.game.ir
    منظورم اینه که رتبه ای که می خوام بالا ببرم در اصل برای سایت اصلیم باشه .
    و حالا سوالم از شما اینه که چه سیستم هایی این امکان رو دارن و کدوم به صرفه تر و بهتره ؟

دیدگاهتان را بنویسید