اینترنت پنجره ها اندروید

نحوه ایجاد صفحه ثبت نام خود را در Multisite وردپرس. خروجی فرم ثبت نام

صفحه ثبت نام خود را برای Multisite به جای استاندارد WP-Signup.php ایجاد کنید.

در تنظیمات معمول WordPress، صفحه ثبت نام (مجوز، بازنشانی رمز عبور) فایل WP-login.php را نمایش می دهد.

  • /wp-login.php - مجوز
  • /wp-login.php؟action\u003dregister - ثبت نام
  • /wp-login.php؟action\u003dlostpassword - تنظیم مجدد رمز عبور

برای Multisite در WP-login.php شرایط جداگانه ای وجود دارد. بنابراین، هنگامی که بر روی لینک /wp-login.php؟action\u003dregister در Multisaite کلیک میکنید، وردپرس به صفحه /wp-signup.php هدایت می شود. در بسیاری از موضوعات، صفحه به نظر بسیار جذاب نیست، بنابراین ما خودمان را خواهیم ساخت.

شبکه اصلی وب سایت

به طور پیش فرض، وردپرس صفحه ثبت نام (WP-Signup.php) را در شبکه اصلی (وب سایت) باز می کند. با این حال، شما می توانید یک صفحه ثبت نام جداگانه برای هر سایت شبکه ایجاد کنید، حتی اگر موضوعات مختلفی داشته باشند. ما این مورد را در نظر می گیریم که در تمام سایت های شبکه دارای صفحه ثبت نام خود هستند، اما همان موضوع مورد استفاده قرار می گیرد و سایت ها فقط در زبان متفاوت هستند. اگر موضوعات مختلف استفاده شوند، باید کد بیشتری بنویسید.

functions.php؟

نه نام این فایل به نظر می رسد در هر مقاله در مورد وردپرس ذکر شده است. در مورد ما، با توجه به این واقعیت که قابلیت ثبت نام برای چندین سایت طراحی شده است، منطقی است که آن را به پلاگین های MU برساند که هنگام باز کردن هر سایت بارگذاری می شوند.

چرت زدن

شایان ذکر است که MU-plugins زودتر از پلاگین های معمولی بارگیری می شود و تا زمانی که هسته وردپرس به طور کامل دانلود شود، بنابراین تماس برای برخی از توابع می تواند منجر به خطاهای فتنه در PHP شود. دانلود مشابه "Early" دارای مزایای آن است. بیایید بگویم در داخل هر موضوع نمی تواند به برخی از اقدامات متصل شود که قبل از دانلود فایل functions.php از موضوع به وجود می آید. یک مثال از این می تواند به عنوان پلاگین jetpack_module_loaded_related-پست ها (پست های مرتبط - نام ماژول) خدمت کند که ممکن است فعالیت ماژول ها را در jetpack ردیابی کند. این به "کلاچ" غیر ممکن است از فایل موضوع به این عمل، زیرا اقدام قبلا قبل از بارگذاری موضوع کار کرده است - پلاگین ها قبلا بارگذاری شده اند. شما می توانید نگاهی به تصویر معمولی سفارشات بوت وردپرس در صفحه مرجع عمل در کد انجام دهید.

سفارش در فایل ها

MU-Plugins ممکن است شامل هر تعداد فایل ها و هر نمودار باشد، که به نظر شما منطقی است. من در مورد چنین سلسله مراتب پایبند هستم:

| -Mu-plugins | - | load.php | - | - | سلنا-شبکه | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | -... | - | - | - |-جتپاک | - | - | - | - | - -Plugin.php

در فایل load.php، تمام پلاگین های لازم به شبکه ما متصل می شوند:

بارگیری های بارگذاری شده برای تمام افزونه ها load_muplugin_textdomain ("selena_network"، "/ selena-network / زبان /")؛ // ثبت نام شبکه نیاز به wpmu_plugin_dir. "/selena-network/signup/plugin.php"؛ // پلاگین های دیگر // نیاز به wpmu_plugin_dir ...

در داخل پوشه Selena-network، پوشه های پلاگین ذخیره می شوند، هر کدام دارای plugin.php خود است، که ما در load.php متصل می شویم. این انعطاف پذیری و توانایی به سرعت غیر فعال کردن و شامل برخی از چیزها است.

آدرس صفحه ثبت نام

برای مشخص کردن آدرس صفحه ثبت نام، از فیلتر WP_signup_Location استفاده کنید. این را می توان در داخل فایل WP-login.php یافت و او مسئول تغییر مسیر در WP-Signup.php است.

مورد "ثبت نام": if (is_multisite ()) (wp_redirect (apply_filters ("wp_signup_location"، network_site_url ("wp-signup.php"))؛ خروج؛

ویژگی خود را در MU-Plugins / Selena-Network / Signup / Plugin.php اضافه کنید، که آدرس صفحه ثبت نام را در سایت فعلی ارائه می دهد:

تابع selena_network_signup_page ($ URL) (بازگشت home_url (). "/ ثبت نام /"؛) add_filter ("wp_signup_location"، "selena_network_signup_page"، 99)؛

selena_network - پیشوند، که من در نام تمام توابع درون mu-plugins در سایت من برای جلوگیری از درگیری ها استفاده می شود، باید با پیشوند منحصر به فرد خود جایگزین شود. اولویت اضافه کردن فیلتر 99، به دلیل برخی از پلاگین ها، مانند BBPress و BuddyPress، می توانید این آدرس را به خودتان بازنویسی کنید (MU-plugins زودتر از پلاگین های معمولی بارگیری می شود). لطفا توجه داشته باشید که صفحه اصلی_url () به جای network_site_url () استفاده می شود، برای ترک بازدید کننده در همان دامنه. شما می توانید هر URL را به عنوان یک آدرس استفاده کنید.

ایجاد یک صفحه

حالا اجازه دهید یک صفحه با site.com/signup/ را از طریق یک رابط کاربری منظم ایجاد کنیم، و در قالب پوشه های دختر موضوع برای صفحه جدید ما - صفحه-Signup.php. به جای کلمه "ثبت نام" شما می توانید از یک شناسه منحصر به فرد استفاده کنید.

در داخل قالب جدید، شما باید از تابع selena_network_signup_main () تماس بگیرید، که فرم ثبت نام را نمایش می دهد.

شایان ذکر است که کل فرآیند با قالب ها مورد نیاز نیست و در عوض شما می توانید کوتاه خود را ایجاد کنید، که همچنین از تابع selena_network_signup_main () تماس می گیرد.

wP-Signup.php و WP-algent.php

در حال حاضر ما یک تابع ایجاد می کنیم که فرم ثبت نام را نمایش می دهد. برای انجام این کار، فایل های WP-Signup.php را کپی کنید و WP-Activity.php را از وردپرس ریشه در MU-Bubs / Selena-Network / ثبت نام / (و فراموش نکنید که آنها را در داخل MU-Plugins / Selena-Network / ثبت نام / plugin.php). دستکاری های بیشتری با فایل ها بسیار دشوار و طولانی برای توصیف هستند، بنابراین آنها را به خودتان بسازید. من فقط توضیح خواهم داد که دقیقا باید انجام شود و فایل های منبع پروژه شما را منتشر کند:

  1. در ابتدای فایل، همه نیاز، توابع فراخوانی و سایر کارهای خارج را حذف کنید.
  2. با اضافه کردن پیشوند های منحصر به فرد به نام، تمام توابع را تغییر دهید.
  3. قسمت پایین کد WP-Signup.php به تابع selena_network_signup_main پیچیده شده است و در ابتدا شروع به نوشتن Global $ Active_Signup؛ .
  4. جایگزین کردن طرح خود را در مکان های مناسب.

در داخل WP-Activate.php شما باید در مورد همین کار انجام دهید:

  1. حذف تمام کد های خارج از توابع، طرح را به یک تابع جداگانه بسته بندی کنید.
  2. طرح را در مکان هایی که لازم است تغییر دهید.

فایل WP-Activate.php مسئول صفحه فعال سازی حساب است. همانطور که با صفحه ثبت نام، شما باید یک قالب جداگانه ای را ایجاد کنید که در آن یک تابع از فایل WP-Activate.php تماس بگیرید.

ما نامه های فعال سازی را ارسال می کنیم

صفحه ثبت نام نامه ای را به بازدید کننده ارسال می کند با اشاره به فعال شدن حساب. به طور پیش فرض، این تابع wpmu_signup_user_notification () از فایل MS-Functions.php است. قابلیت آن را می توان برای عملکرد آن قرض گرفت. دلیل اینکه شما می خواهید از استفاده از این تابع اجتناب کنید - یک مرجع فعال سازی حساب را با WP-algember.php ارسال می کند. شما می توانید این ویژگی را با استفاده از فیلتر WPMU_SIGNUP_USER_NOTFICATIFICATIFICATION غیر فعال کنید (اگر این کار را انجام دهید (اگر این کار را انجام ندهد، نامه فعال سازی دو بار ارسال می شود، در واقع دو حرف متفاوت).

تابع Armyofselenagomez_wpmu_signup_user_notification ($ کاربر، $ user_mail، $ key، $ meta \u003d array ()) (/ / // کد از WPMU_SIGNUP_USER_NOTIFICATION () تابع WP_MAIL ($ user_email، wp_specialchars_decode ($ subject)، $ پیام، $ message_headers ) بازگشت نادرست؛) add_filter ("wpmu_signup_user_notification"، "armyofselegenagomez_wpmu_signup_user_notification"، 10، 4)؛

به عنوان یک نتیجه، صفحه ثبت نام در موضوع سلنا شروع به نگاه بسیار تمیز و مراقب باشید.

نتیجه

اینترنت دارای بسیاری از راه های بسیار صحیح نیست که یک چیز را انجام دهد - Apache Redirects، AJAX فرم هایی که بدون اسکریپت جاوا کار نمی کنند و غیره من واقعا آن را خیلی دوست نداشتم، بنابراین سعی کردم آن را به درستی انجام دهم وب سایت من

من متوجه می شوم که فایل های ویرایش باید بتوانند با دقت و سعی نکنند از منبع به RANSNESH حرکت نکنند، اگر وردپرس فایل های WP-Signup.php و WP-Activate.php را تغییر دهد، آنها را آسان تر برای پیدا کردن تغییرات پیدا کرد .

فراموش نکنید که به کد منبع تمام توابع شرح داده شده در بالا نگاه کنید تا به طور کامل با آنچه که در داخل کد اتفاق می افتد برخورد کنید.

جایزه. حفاظت در برابر اسپم ها

حتی جوانترین سایت های وردپرس اغلب به ثبت نام اسپم می پردازند. شما می توانید شرایط بی پایان را برای فیلتر کردن ربات ها بنویسید، اغلب بیشتر شبیه به تلاش برای ایجاد هوش مصنوعی 🙂 در مورد چند دلیل، یک تغییر مسیر منظم در آپاچی به من کمک کرد، که در هنگام باز کردن /wp-signup.php و / wp- acitvate.php، من از 404 سوال کردم (من متخصص در تنظیم آپاچی نیستم، بنابراین قوانین من ممکن است بسیار درست نباشد).

RewRiteEngine در Rewritebase / Rewiterule ^ WP-Signup \\ .php - Rewiterule ^ WP-Activate \\ .php - # شروع وردپرس # قوانین از وردپرس به طور پیش فرض لمس نمی کنند :) # ... # پایان وردپرس

P. S. من سعی می کنم برخی از چیزهای شخص ثالث را به همان اندازه که ممکن است توضیح دهم، زیرا زمانی که من شروع کردم، گاهی اوقات به نحوی به نحوی گفتم و توضیح بسیاری از چیزها. من همچنین معتقدم که نکات کوچک کوچک در مورد مواد دیگر کسی به مطالعه چیزی جدید و گسترش میدان دانش خود را تحت فشار قرار خواهد گرفت. عبارات منظم در سوابق Reriterule استفاده می شود، به عنوان مثال، نماد به طور کامل پیچیده نیست، به معنای آغاز خط است.

آگهی ها.

ln [-FFHINSV] فایل اصلی [ target_file ] LN [-FFHINSV] فایل اصلی ... target_catalog ارتباط دادن. source_file target_file برنامه لوگاریتم. ورودی را در دایرکتوری (لینک) نامگذاری می کند target_file. در target_file همان رژیم ها نصب خواهند شد فایل اصلی. منابع به شما اجازه می دهد تا چندین نسخه از یک فایل یا دایرکتوری که در مکان های مختلف قرار داده شده اند، داشته باشید، اما بدون اشغال فضای دیسک. دو نوع لینک، منابع دقیق و پیوندهای نمادین وجود دارد. چگونه مرجع اشاره به فایل اصلیبستگی به نوع لینک دارد.

فرمان LN دارای گزینه های زیر است: -f اگر target_file در حال حاضر وجود دارد، آن را حذف کنید تا بتوانید یک لینک ایجاد کنید. این گزینه گزینه را لغو می کند. -من.. -ف اگر target_file در حال حاضر وجود دارد و یک دایرکتوری است، آن را حذف کنید تا بتوانید یک لینک ایجاد کنید. گزینه استفاده شده با گزینه های -F یا -من.در صورتی که هیچ یک از آنها مشخص نشده باشد، گزینه به معنای آن است. . این گزینه بدون یک گزینه کار نمی کند. -s.. -ه اگر target_file یا target_catalog این یک لینک نمادین است، آن را دنبال نمی کند. این گزینه در ترکیب با گزینه مفید است. برای جایگزینی مرجع نمادین، که دایرکتوری را نشان می دهد. -i حالت تعاملی اگر یک target_file وجود دارد، کاربر یک درخواست برای حذف در صورت رضایت، لوگاریتم. برداشتن target_file و یک لینک جدید ایجاد کنید. این گزینه گزینه عمل را لغو می کند. . -n گزینه آنالوگ ، برای سازگاری با سایر پیاده سازی برنامه لوگاریتم.. -s ایجاد یک لینک نمادین -v حالت نمایش اطلاعات در مورد پیشرفت برنامه لوگاریتم.. برنامه پیش فرض لوگاریتم. یک لینک سخت را ایجاد می کند. لینک دقیق به فایل، هیچ متفاوت از فایل منبع نیست، و تغییرات ساخته شده در فایل به نمایندگی از آن وابسته به آن است که درخواست تجدید نظر به آن. منابع سخت را نمی توان ارجاع به دایرکتوری ها، و همچنین نمی تواند خارج از این سیستم فایل باشد. لینک نمادین شامل نام فایل است که آن را اشاره می کند. هنگام انجام عملیات باز کن.(2) بیش از مرجع نمادین از فایل Origal استفاده می کند. زنگ زدن وضع(2)، ساخته شده بر روی یک مرجع نمادین، همچنین فایل منبع را بازگرداند. برای اطلاعات در مورد لینک شما می توانید استفاده کنید lstat(2). برای خواندن محتویات لینک نمادین، می توانید از تماس استفاده کنید readlink(2). بر خلاف منابع سخت، نمادین، می تواند بر روی سیستم فایل دیگری باشد و ممکن است دایرکتوری ها را نشان دهد. با یک یا دو استدلال، برنامه لوگاریتم. اشاره به موجود را ایجاد می کند فایل اصلی. نام پیوند از این استدلال گرفته خواهد شد. target_file. اگر در استدلال target_fileدایرکتوری برای ایجاد یک مرجع مشخص نشده است، اگر فقط دایرکتوری مشخص شود، دایرکتوری فعلی مورد استفاده قرار می گیرد، پیوند به آخرین عنصر از فایل اصلی. با بیش از دو استدلال، برنامه لوگاریتم. ایجاد لینک B. target_catalog در تمام مسیرهای نشان داده شده در فایل اصلی. لینک ها با نام فایل های منبع به دست می آیند. اگر برنامه لوگاریتم.، ناشی از فرم ارتباط دادن.این دقیقا دو استدلال منتقل می شود، استدلال های منتقل شده نمی توانند دایرکتوری ها باشند، علاوه بر این، در این فرم هیچ گزینه ای را قبول نمی کند. این یک فرم ساده استفاده است. گزینه سازگاری , -من., -n و -v -vبرای سازگاری با پیاده سازی های دیگر برنامه در نظر گرفته شده اند لوگاریتم.و برای استفاده در اسکریپت توصیه نمی شود. گزینه اضافی برای

به شما امکان می دهد از یک تنظیم وردپرس برای چندین سایت در همان زمان استفاده کنید. در همان زمان، هر سایت جداول خود را در پایگاه داده با یک پیشوند منحصر به فرد دریافت می کند.

جداول با داده های کاربران ثبت شده مشترک برای همه سایت های شبکه. این یک روز خاص و ثبت نام یک روز شما می توانید به چندین سایت دسترسی داشته باشید. علاوه بر این، در هر سایت، همان حساب ممکن است حقوق متفاوت داشته باشد. به عنوان مثال، در یک سایت، کاربر می تواند سردبیر، و در یک مدیر دیگر باشد.

در نصب معمول وردپرس، صفحه ثبت نام، مجوز و بازنشانی رمز عبور فایل WP-login.php را نمایش می دهد.

  • wp-login.php - مجوز
  • wp-login.php؟ action \u003d ثبت نام - ثبت نام
  • wp-login.php؟ action \u003d loadpassword - بازنشانی رمز عبور

در حالت Multisite، هسته وردپرس شروع به رفتار تا حدودی متفاوت و هنگام تغییر به لینک WP-login.php می کند؟ action \u003d ثبت نام یک تغییر مسیر را در wp-signup.php دریافت خواهید کرد. این صفحه ثبت نام از شبکه شما است که به طور پیش فرض در وردپرس است.

علاوه بر ثبت نام حساب های کاربر عادی، می توانید یک سایت جدید را بر روی آن ایجاد کنید اگر SuperMinistrator این فرصت را در تنظیمات شبکه (تنظیمات شبکه) فعال کرده است.

در اکثر موضوعات، صفحه ثبت نام خیلی خوب نیست. بسیاری از تم ها توسط چارچوب CSS مانند بوت استرپ و کلاس های خاص خود را برای سبک سازی عناصر مختلف در صفحات استفاده می شود، بنابراین سخت است که یک HTML را بنویسید که برای همه مناسب باشد.

اما اگر صفحه به نظر بی نظیر نباشد، نباید ناامید شود. فایل WP-Signup.php در ابتدا یک چیز عالی است، زمانی که هیچ وقت برای کار کردن هر بخش از سایت وجود ندارد - شما می توانید بر روی صفحات و محتوای مهم دیگر تمرکز کنید.

هنگامی که شما آماده هستید که صفحه ثبت نام خود را بسازید، WP-Signup.php یک نمونه خوب و یک مثال خواهد بود، که آسان است برای درک طیف توابع که وردپرس برای پردازش و چک کردن داده های وارد شده توسط کاربران فراهم می کند و ایجاد حساب های جدید را فراهم می کند.

شبکه اصلی وب سایت

به طور پیش فرض، وردپرس صفحه ثبت نام (WP-Signup.php) را در شبکه اصلی (وب سایت) باز می کند. با این وجود، شما می توانید صفحات ثبت نام برای هر سایت شبکه ایجاد کنید، حتی اگر آنها موضوعات داشته باشند.

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

جایگزین برای functions.php.

سفارش در فایل ها

MU-plugins ممکن است شامل هر تعداد فایل ها و یک ساختار که به نظر منطقی به نظر می رسد. من در مورد چنین سلسله مراتب پایبند هستم:

| mu-plugins | | load.php | | سلنا-شبکه | | | ثبت نام | | | | plugin.php | | | ... | | | jetpack | | | | plugin.php

در فایل load.php، ترجمه ها و تمام پلاگین های لازم "پلاگین ها متصل هستند:

// انتقال انتقال برای mu-plugins load_muplugin_textdomain (selena_network "،" / سلنا-شبکه / زبان / ")؛ // عملکرد صفحه ثبت نام نیاز به wpmu_plugin_dir. "/selena-network/signup/plugin.php"؛ // پلاگین دیگری // نیاز به wpmu_plugin_dir ...

در داخل دایرکتوری Selena-Network، پوشه های پلاگین ذخیره می شوند. هر کدام دارای plugin.php خود است، که ما در load.php متصل هستیم. این باعث انعطاف پذیری و توانایی فورا غیر فعال کردن و استفاده از اجزای فردی در پروژه کاری در موارد اضطراری می شود.

صفحه ثبت نام

با درک کجا و چگونگی نوشتن کد، می توانید به ایجاد صفحه ثبت نام بروید.

یک صفحه را با example.org/signup/ از طریق رابط کاربری معمولی ایجاد کنید. به عنوان یک آدرس، شما می توانید از هر URL استفاده کنید که برای پروژه شما مناسب است.

تغییر مسیر به صفحه ثبت نام مورد نظر

برای وردپرس برای پیدا کردن صفحه ثبت نام جدید ما و ایجاد یک تغییر مسیر بر روی آن، هنگام کلیک بر روی لینک "ثبت نام"، فیلتر WP_signup_Location استفاده می شود. این را می توان در داخل wp-login.php یافت و این است که مسئول تغییر مسیر به طور پیش فرض WP-signup.php است.

مورد "ثبت نام": اگر (IS_Multisite ()) (WP_REDIRECT (APTION_FILTERS ("WP_SIGNUP_LOCATION"، NETWORK_SITE_URL ("WP-signup.php"))؛ خروج؛ // ...

به طور پیش فرض به یاد داشته باشید، صفحه ثبت نام بر روی دامنه اصلی شبکه باز می شود. به همین دلیل است که network_site_url () در اینجا استفاده می شود.

فیلتر فیلتر خود را به MU-Plugins / Selena-Network / Signup / Plugin.php اضافه کنید، که به آدرس صفحه ثبت نام در سایت فعلی داده می شود:

تابع selena_network_signup_page ($ url)؛) add_filter ("wp_signup_location"، "selena_network_signup_page"، 99)؛

selena_network - پیشوند، که من در نام تمام توابع درون mu-plugins در سایت من برای جلوگیری از درگیری ها استفاده می شود، باید با پیشوند منحصر به فرد خود جایگزین شود. اولویت اضافه کردن فیلتر 99، به دلیل برخی از پلاگین ها، مانند BBPress و BuddyPress، می توانید این آدرس را به خودتان بازنویسی کنید (MU-plugins زودتر از پلاگین های معمولی بارگیری می شود).

لطفا توجه داشته باشید که home_url () استفاده می شود، که، بر خلاف network_site_url ()، آدرس سایت فعلی را می دهد، و نه سایت اصلی شبکه.

WP-Signup.php قابلیت

فایل WP-Signup.php شامل تعداد زیادی از توابع و کد است. برای دیدن تصویر به طور کلی، می توانید از کد تاشو استفاده کنید. به عنوان یک قانون، به زبان انگلیسی آن را "کد تاشو" نامیده می شود.

در ابتدای فایل از 1 تا 80، خط (در نسخه 4.1.1)، چک های مختلف ساخته شده و خروجی صفحه "شروع" با استفاده از get_header ().

بعد، بسیاری از روش ها اعلام می شود و قبل از شروع کار با آنها، ارزش درک هر چه عملکرد را می سازد. در داخل، بسیاری از این ها اغلب از توابع دیگر با پیشوند WPMU_ استفاده می شود، همه آنها در فایل WP / MS-Functions.php اعلام شده اند. این بخش بدون دیدن کد خود سخت است. زیر شرح مختصری از توابع اساسی در صورت مشکل شما.

  • wpmu_signup_stylesheet () - خروجی CSS اضافی در صفحه ثبت نام.
  • show_blog_form () - زمینه های ثبت نام سایت (آدرس، نام قابل مشاهده برای موتورهای جستجو).
  • validate_blog_form () - بررسی آدرس سایت وارد شده و نام ها با استفاده از wpmu_validate_blog_signup ().
  • show_user_form () - زمینه برای ثبت نام کاربر (ورود و آدرس ایمیل).
  • validate_user_form () - بررسی ورود وارد شده و آدرس ها. ایمیل با wpmu_validate_user_signup ().
  • signup_another_blog () - زمینه های ثبت نام سایت های جدید با استفاده از show_blog_form () برای کاربرانی که قبلا در سایت ثبت شده اند.
  • validate_another_blog_signup () - آدرس سایت و نام را با استفاده از validate_blog_form () بررسی می کند.
  • signup_User () تابع اصلی برای خروجی زمینه صفحه ثبت نام است.
  • validate_user_signup () - آدرس ورود و آدرس ایمیل را بررسی می کند. ایمیل با validate_user_form ().
  • signup_blog () - زمینه ها برای ورود به آدرس، نام و دید از سایت (مرحله دوم ثبت نام) با استفاده از show_blog_form ().
  • validate_blog_signup () - ورود به سیستم، آدرس ایمیل را بررسی می کند. نامه، آدرس و نام سایت

در پایین فایل WP-Signup.php (از 646 دوخت در نسخه 4.1.1)، منطق اصلی صفحه ثبت نام، که از روش های فوق استفاده می کند. این قسمت از کد به تابع ارسال نمی شود. در پایان، get_footer () نامیده می شود.

کپی WP-Signup.php را کپی کنید

بعد، روش کپی کردن wp-signup.php در MU-plug-ins شرح داده خواهد شد و تغییرات را به چنگال توصیف می کند. ممکن است به نظر درست نیست. در عوض، شما می توانید توابع خود را از ابتدا برای چک کردن و خروجی فرم ها با استفاده از کلاس ها، نه توابع متعارف بنویسید. به نظر من، WP-signup.php در حال حاضر دارای تمام منطق لازم برای صفحه ما، تنها برای تغییرات جزئی باقی می ماند.

هنگام به روز رسانی وردپرس، WP-Signup.php تغییرات را از زمان به زمان تغییر می دهد، اما این بدان معنا نیست که با هر نسخه باید "Forc" آن را همگام سازی کند. توابع در داخل WP-Signup.php اساسا تنها توسط خروجی HTML مشغول به کار هستند، بررسی داده ها، ایجاد حساب ها و سایت ها در پیشوند WPMU_ مشغول به کار هستند، که در MS-Functions.php اعلام شده است.

ما یک تابع ایجاد می کنیم که فرم ثبت نام را در صفحه نمایش می دهد. برای انجام این کار، wp-signup.php را از ریشه وردپرس در mu-bubs / selena-network / ثبت نام / کپی کنید. آن را در داخل Mu-Pugins / Selena-Network / Signup / Plugin.php وصل کنید).

نیاز به wpmu_plugin_dir. "/selena-network/signup/wp-signup.php"؛

حذف تمام چک های مورد نیاز و غیر ضروری از همان ابتدای فایل کپی شده. در نسخه 4.1.1، این کل کد از 1 تا 80 خط است.

در حال حاضر ما آماده هستیم تا عملکرد اصلی را برای نمایش فرم ثبت نام ایجاد کنیم. برای انجام این کار، تمام منطق از خط 646 و تا انتهای فایل ما به تابع selena_network_signup_main منتقل می شود. در پایان، شما دو بسته غیر ضروری را حذف می کنید

(خطوط 722 و 723)، و همچنین تماس Get_footer ().

در ابتدا، در ابتدا ایجاد selena_network_signup_main () در ابتدا، متغیر جهانی Active_signup را اعلام خواهیم کرد که تمام روش های دیگر از این فایل استفاده می شود. و اضافه کردن تماس رویداد قبل از_signup_form، که ما از شروع فایل حذف کردیم.

تابع selena_network_signup_main () (Global $ active_signup؛ do_action ("fure_signup_form")؛ // ...)

در حال حاضر تنها برای تغییر طرح در همه مکان هایی که لازم است تغییر می کند و صفحه ثبت نام آماده است.

خروجی فرم ثبت نام

حداقل دو گزینه وجود دارد. یک راه راحت تر برای ایجاد یک کد کوتاه و قرار دادن آن در صفحه از طریق ویرایشگر معمول.

// ایجاد یک network_signup add_shortcode کوتاه ("network_signup"، "selena_network_signup_main")؛

گزینه دوم این است که یک صفحه Page-Signup.php را در پوشه تم دختر ایجاد کنید. به جای کلمه "ثبت نام" شما می توانید از یک شناسه منحصر به فرد اختصاص داده شده به صفحه استفاده کنید. در داخل الگو، طرح بندی مورد نیاز را اضافه کنید و Selena_Network_signup_main () را در جای مناسب انتخاب کنید.

در نتیجه، صفحه ثبت نام من شروع به نگاه بسیار بهتر و تمیز تر کرد.

صفحه فعال سازی

به طور پیش فرض، وردپرس به طور معمول فرآیند ثبت نام را در Multisite برای دو مرحله تقسیم می کند - پر کردن فرم در سایت و فعال سازی حساب زمانی که شما در لینک ارسال شده در یک ایمیل. پس از پر کردن فرم ایجاد شده در بخش قبلی، وردپرس یک نامه را با یک دستورالعمل کوچک و مرجع برای فعال کردن حساب ارسال می کند.

برای خروجی صفحه فعال سازی، فایل WP-Activate.php در دایرکتوری ریشه وردپرس قرار دارد. WP-Activate.php همچنین می تواند به طور کامل تغییر کند. این فرایند شبیه به آنچه که ما قبلا برای wp-signup.php انجام شده است.

Example.org/Activate / Page را از طریق رابط کاربری معمولی ایجاد کنید. به عنوان یک آدرس، از هر URL استفاده کنید که برای شما مناسب است.

فایل WP-Activate.php را به MU-Plugins کپی کنید و آن را به Mu-Pugins / Selena-Network / Signup / Plugin.php وصل کنید.

نیاز به wpmu_plugin_dir. "/selena-network/signup/wp-activate.php"؛

در داخل، محتوای بسیاری نیست، بر خلاف wp-signup.php. این فایل یک عملیات واحد را انجام می دهد - اگر کلید صحیح به دست آمده و یک پیام خطا یا عملیات موفقیت آمیز را نمایش دهد، حساب را فعال می کند.

حذف تمام چک های غیر ضروری و نیاز - از 1 تا 69 خط در وردپرس 4.1.1. در نهایت، تماس Get_footer () را حذف کنید. محتویات باقیمانده با انتقال به تابع selena_network_activate_main ().

جالب است که متوجه شوید که ثابت WP_INSTALLING در اینجا قبل از بارگیری وردپرس (WP-Load.php) اعلام شد. حضور آن باعث ایجاد وردپرس برای بارگذاری پلاگین ها نمی شود.

همانطور که در مورد صفحه ثبت نام، تنها برای رفع طرح که در آن ضروری است، باقی مانده است. شما همچنین می توانید متن پیام های نمایش داده شده را تغییر دهید (در این مورد، فراموش نکنید که یک دامنه متنی از mu-plugins خود را به تمام مترجمان تابع اضافه کنید، آن را در هر جای دیگر نصب نشده است).

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

نامه های فعال سازی با منابع مناسب

صفحه فعال سازی آماده کار است، اما وردپرس در مورد آن نمی داند و هنوز نامه های فعال سازی را با اشاره به WP-algent.php ارسال می کند. بر خلاف wp-signup.php هیچ فیلتر وجود ندارد، که اجازه می دهد آدرس را تغییر دهد. در عوض، شما باید ویژگی خود را بنویسید که نامه ها را با لینک های صحیح ارسال کنید.

در زمان پر کردن و ارسال یک فرم در صفحه ثبت نام وردپرس WPMU_SIGNUP_ کاربر.() یا wpmu_signup_ وبلاگ.() بسته به نوع ثبت نام. هر دو توابع یک ورودی جدید را در جدول wp_signups ایجاد می کنند که آن را با محتوای لازم پر می کنند، که کلید فعال سازی حساب وجود دارد.

پس از، بسته به تابع، wpmu_signup_ نامیده می شود کاربر._ نانوایی () یا wpmu_signup_ وبلاگ._اطلاع (). هر دو توابع عملکرد مشابهی دارند - تولید و ارسال یک نامه با یک مرجع فعال سازی، اما استدلال های مختلف را انجام دهید. در هر دو فیلتر برای "رهگیری" رویدادها وجود دارد.

اگر (! apply_filters ("wpmu_signup_user_notification"، $ user، $ user_email، $ key، $ meta)) بازگشت نادرست؛

برای فعال کردن حسابهای با ایجاد وبلاگ:

اگر (apply_filters ("wpmu_signup_blog_notification"، $ دامنه، $ path، $ title، $ کاربر، $ user_email، $ key، $ meta)) (بازگشت نادرست؛)

این تنها برای نوشتن دستگیره های خود است که در آن شما از طریق WP_MAIL () نامه های خود را ارسال می کنید، و در نهایت لزوما دروغ گفتن به طوری که وردپرس یک نامه فعال سازی را دو بار ارسال نمی کند - یکی از شما، دیگری - نامه به طور پیش فرض با یک لینک به طور پیش فرض WP-algent.php.

تابع selena_network_wpmu_signup_user_notification ($ user، $ user_email، $ key، $ meta \u003d array ()) (/ / header، header، text and letter headers // ... // ارسال یک نامه یا اضافه کردن یک کار cron برای ارسال یک نامه wp_mail ($ user_email، wp_specialchars_decode ($ subject)، $ message، $ message_headers)؛ // بازیابی نادرست به طوری که وردپرس یک نامه فعال سازی را ارسال نمی کند دو بار بازگشت نادرست؛) add_filter ("wpmu_signup_uver_notification"، "selena_network_wpmu_signup_user_notification"، 10، 4) ؛

اگر نامه ها را از طریق سرور SMTP ارسال کنید یا تعداد ثبت نام ها بسیار بزرگ است، باید فکر کنید که بلافاصله نامه ها را ارسال نکنید. در عوض، شما می توانید کارهای cron را با استفاده از وردپرس cron اضافه کنید.

دسترسی به WP-Signup.php و WP-Activital.php را نزدیک کنید

پس از ایجاد صفحات ثبت نام و فعال سازی خود، ممکن است لازم باشد که "اصل" را ببندید. به عنوان مثال، اگر زمینه های اضافی در صفحه ثبت نام وجود داشته باشد، باید پر شود. همچنین، بسیاری از سایت های وردپرس در معرض ثبت نام اسپم هستند.

حل دو مشکل با یک اقدام را می توان از آپاچی خواسته شد تا 404 را در مورد تلاش برای باز کردن این صفحات درخواست کند. برای انجام این کار، شما فقط باید یک جفت بازنویسی اضافی را به فایل پیکربندی خود یا.htaccess ثبت کنید.

RewriteEngine در rewritebase / # دانش عبارات منظم هرگز اضافی نخواهد بود :) rewraterule ^ wp-signup \\ .php - rewriterule ^ wp-activate \\ .php - # شروع وردپرس # قوانین از وردپرس به طور پیش فرض را لمس نکنید :) # .. . # پایان دادن به وردپرس

نتیجه

برای این و بسیاری دیگر "مشکلات" مرتبط با وردپرس در اینترنت راه حل های زیادی وجود دارد. به عنوان مثال، برای ایجاد صفحات ثبت نام و فعال سازی، برخی از آنها پیشنهاد می شوند که WP-Signup.php اصلی را بازنویسی کنند و WP-algent.php را بازنویسی کنند. این نباید انجام شود زیرا در مورد به روز رسانی وردپرس، شما تمام تغییرات ساخته شده به فایل ها را از دست خواهید داد، و شما نمی توانید یکپارچگی هسته را بررسی کنید.

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

P.S.

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

اگر در هنگام ایجاد مقاله ثبت نام و فعال سازی، هر گونه سوال یا مشکلی دارید، پس از خواندن مقاله، یک نظر را ترک کنید و ما پاسخ خواهیم داد.

27.03.2015 27.03.2015

توسعه دهنده وردپرس. او در همه چیز را دوست دارد و در ابزارهای جدید معامله می کند. با الهام از معماری اجزای Symfony.