زنگ.

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

لینک های یکبار مصرف می توانند در شرایط مختلف مورد استفاده قرار گیرند: به منظور دسترسی موقت به فایل یا صفحه یا تأیید ثبت نام. در این درس، ما نشان خواهیم داد که چگونه یک آدرس URL یکبار مصرف را تولید و پیاده سازی کنیم.

ایجاد URL

فرض کنید سایت ما دارای سیستم تأیید هویت کاربر است. پس از ثبت نام، از کاربر می خواهیم که روش تأیید ایمیل را منتقل کند. برای ایجاد چنین پیوندهایی می توانیم از پارامتر خاص TOKEN استفاده کنیم. یک مثال از چنین لینک:

http: //example.com/activate؟ token \u003d ee97780 ...

بدون یک پایگاه داده، ما نمی توانیم در اینجا انجام دهیم، بنابراین اجازه دهید به میز نگاه کنیم که ما کار خواهیم کرد.

ایجاد جدول pending_users (token char (40) null، نام کاربری varchar (45) null، tstamp integer unsigned null، کلید اولیه (نشانه)؛

در جدول ما 3 فیلد را ذخیره خواهیم کرد: نشانه، نام کاربری و زمان. برای تولید یک نشانه، ما از تابع sha1 () استفاده خواهیم کرد، که یک رشته از 40 کاراکتر را می دهد. فیلد TSTAMP زمان تولید نشانه را ذخیره می کند تا بتوانیم لینک ها را با یک خروجی پیگیری کنیم.

راه های زیادی برای تولید نشانه وجود دارد، اما در این درس ما از توابع UNIQID () و SHA1 () استفاده خواهیم کرد. صرف نظر از روش تولید یک نشانه، اطمینان حاصل کنید که ارزش های تولید شده متفاوت خواهد بود و احتمال تکراری حداقل است.

$ token \u003d sha1 (UNIQID ($ username، true))؛

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

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

$ \u003d $ db- پرس و جو\u003e آماده ( "INSERT INTO PENDING_USERS (نام کاربری، رمز، Tstamp) ارزش (،)؟؟")؛ $ query-\u003e اجرای (Array ($ username، $ token، $ _server ["request_time"]))؛

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

حالا که همه ما داریم اطلاعات لازم، ما می توانیم یک آدرس ایمیل موقت ایجاد کنیم:

$ url \u003d "http://example.com/activate.php؟token\u003d$Token؛

$ message \u003d.<<

بررسی

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

// دریافت اگر token (isset ($ _ get ["token"]) && preg_match ("/ ^ (40) $ / i"، $ _GET [token])) ($ token \u003d $ _GET ["token" ]؛) دیگری (پرتاب استثناء جدید ( "Tocken شده معتبر نیست.")؛) // چک کردن $ \u003d $ db- پرس و جو\u003e آماده علامت ( "انتخاب نام کاربری، TStamp از Pending_users کجا رمز \u003d؟")؛ $ query-\u003e اجرای (آرایه ($ token))؛ $ row \u003d $ query-\u003e fetch (PDO :: fetch_assoc)؛ $ query-\u003e closecursor ()؛ اگر ($ ردیف) (Extract ($ ردیف)؛) else (پرتاب استثناء جدید ("Tocken معتبر نیست.")؛) // فعال کردن حساب کاربری // ... // حذف نشانه از پایه $ query \u003d $ DB\u003e آماده ( "DELETE FROM PENDING_USERS کجا نام کاربری \u003d و Token \u003d و TSTAMP \u003d؟"،)؛ $ query-\u003e اجرای (Array ($ username، $ token، $ tstamp))؛

ما همچنین نیاز به ارائه تست نشانه ها، طول عمر آن منقضی شده است:

// 1 روز در ثانیه \u003d 60 ثانیه * 60 دقیقه * 24 ساعت $ delta \u003d 86400؛ // بررسی اگر ($ _server ["request_time"] - $ tstamp\u003e $ delta) (پرتاب استثنا جدید ("Tocken Lifetime منقضی شده است.)؛) // فعال کردن حساب سفارشی // ...

بنابراین، ما دو چک داریم: یکی در اعتبار نشانه، دیگری در زمان وجود آن.

نتیجه

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

علاوه بر این، شما می توانید یک اسکریپت ایجاد کنید که نشانه هایی را که هرگز استفاده نکرده اند حذف کنید. این اسکریپت را می توان از زمان به زمان راه اندازی کرد یا برای این CRON درخواست کرد.

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

در این راهنما، ما اصطلاح "قلمرو پلاگین" را در نظر خواهیم گرفت، و همچنین یاد می گیریم که چگونه از یک ابزار فوق العاده نوشته شده توسط Thomas Griffin استفاده کنید: کتابخانه فعال سازی پلاگین TGM.

عملکرد موضوع: تهاجم به قلمرو پلاگین ها

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

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

من قبلا قبلا در یکی از مقالات من یک قانون تجربی "پلاگین های قلمرو" را تشکیل دادم

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

قانون بسیار ساده مردم هنوز سعی می کنند در سطح قطعات عملکردی کد در موضوعات خود ثبت نام کنند، اما کاتالوگ تم ها (مانند WordPress.org یا Themeforest) تم ها را نمی گیرند که به قلمرو پلاگین ها حمله می کنند. بنابراین، پیشنهاد عملکرد در تم ها به یک مشکل خاص تبدیل شده است.

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

مقدمه ای بر کتابخانه فعال سازی پلاگین TGM

تنظیم فعال سازی پلاگین TGM

توجه به عملکرد TGMPA () با دو پارامتر در انتهای کد. پارامتر دوم متغیر $ config است که همچنین یک آرایه مانند $ plugins است. به شرح زیر از نام آن، شما می توانید کتابخانه فعال سازی پلاگین TGM را با استفاده از آن پیکربندی کنید از این توده. متغیر مجموعه ای از گزینه های خود را می پذیرد:

  • شناسه (رشته) یک شناسه منحصر به فرد برای کتابخانه فعال سازی پلاگین TGM در موضوع شماست. این بسیار مهم است: اگر پلاگین های دیگر نیز از فعال سازی پلاگین TGM استفاده کنند، شناسه های مختلف از اختلافات احتمالی جلوگیری خواهند کرد.
  • default_Path (رشته) - یک مسیر مطلق پیش فرض برای پلاگین ها در موضوع شما. هنگامی که شما آن را نصب می کنید، می توانید از نام فایل ZIP به عنوان مقدار پارامتر منبع برای پلاگین خود استفاده کنید.
  • منو (رشته) - منوی منو برای نصب پلاگین ها.
  • has_notices (boolean) - اگر مشخص شده در حقیقت، اعلان های اداری برای پلاگین های مورد نیاز / توصیه شده صادر شود.
  • از بین بردن (boolean) - اگر مشخص شده در درست باشد، کاربر می تواند اطلاعیه ها را "بسته" کند.
  • dismiss_msg (رشته) - اگر گزینه لغو شده به اشتباه تنظیم شده باشد، این پیام بالاتر از اعلان مدیر نمایش داده خواهد شد.
  • iS_Automatic (boolean) - اگر در TRUE مشخص شده باشد، پلاگین ها پس از آنکه کاربر موافقت می کند تا آنها را نصب کند، فعال خواهد شد.
  • پیام (رشته) - HTML اضافی، نمایش داده شده در مقابل جدول پلاگین.
  • رشته ها (آرایه) - آرایه ای که شامل پیام های نمایش داده می شود. شما می توانید آنها را به عنوان خطوط پخش تنظیم کنید. به فایل example.php نگاه کنید تا ببینید فهرست کامل همه پست ها
"افسانه-TGMPA"، // شما منحصر به فرد TGMPA ID "Default_path" \u003d\u003e get_stylesheet_directory (). "/ lib / plugins /"، // پیش فرض مطلق مسیر "منو" \u003d\u003e "mytheme-install-install-plugins"، // menu slug "has_notices" \u003d\u003e true، // نمایش اطلاعیه های مدیریت "dismissable" \u003d\u003e false // این اعلان ها "dismiss_msg" \u003d\u003e "من واقعا واقعا نیاز به شما برای نصب این پلاگین ها، خوب؟"، // این پیام خروجی در بالای nag "IS_Automatic" \u003d\u003e درست است، // به طور خودکار فعال کردن پلاگین ها پس از نصب "پیام" \u003d\u003e ""، // پیام به خروجی درست قبل از پلاگین جدول" رشته "\u003d\u003e آرایه ()؛ // آرایه ای از پیام که با استفاده از رشته TGM پلاگین فعال سازی)؛؟\u003e

نتیجه

همانطور که می بینید، عملکرد را نشان می دهد تم وردپرس شاید شما فقط باید اول از همه چیز در مورد کاربران که می توانید از یک موضوع به دیگری تغییر دهید فکر کنید. کتابخانه فعال سازی پلاگین TGM ارائه می دهد راه واقعا هوشمندانه برای این.

شما در مورد این ابزار چه فکر میکنید؟ آیا تا به حال از آن استفاده کرده اید، آیا قصد دارید از آن در آینده استفاده کنید؟ افکار خود را به اشتراک بگذارید!

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

در نصب معمول صفحه وردپرس ثبت نام (مجوز، تنظیم مجدد رمز عبور) فایل 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 زودتر از پلاگین های معمولی بارگیری می شود و تا زمانی که هسته وردپرس به طور کامل بارگذاری شود، بنابراین تماس برای برخی از توابع می تواند منجر به اشکالات کشنده در پی اچ پی دانلود مشابه "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-Activate.php از وردپرس ریشه در MU-plugings مورد / سلنا-شبکه / ثبت نام / (و فراموش نکنید که به آنها متصل داخل MU-پلاگین / سلنا-شبکه / ثبت نام / 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_Notification با حرکت نادرست در آن را غیر فعال (در صورتی که این را به انجام نمی، نامه فعال سازی خواهد شد دو بار فرستاده می شود، خوب، در واقع دو حرف متفاوت).

تابع Armyofselenagomez_wpmu_signup_user_notification ($ کاربر، $ User_Mail، $ کلیدی، $ متا \u003d آرایه ()) (// ... // کد از WPMU_SIGNUP_USER_Notification تابع () WP_Mail ($ USER_EMAIL، WP_SPECIALCHARS_DECODE ($ تم)، $ پیام، $ 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 را تغییر دهد، آنها را آسان تر برای پیدا کردن تغییرات پیدا کرد .

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

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

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

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

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

یک تابع را ثبت می کند که در طول فعال شدن پلاگین باعث می شود.

این ویژگی تابع فراخوانی مشخص شده را به قلاب Activate_ (Plugin) متصل می کند و برای این قلاب بسته بندی شده است.

(پلاگین) در Hook Activate_ (Plugin) به نام نام نسبی به فایل اصلی پلاگین جایگزین می شود. به عنوان مثال، اگر پلاگین واقع شده باشد: WP-Content / Plugins / SamplePLugin / Sample.php، سپس نام قلاب خواهد بود: Activate_SamplePlugin / Sample.php.

از نسخه 3.1. قلاب فقط در طول فعال شدن پلاگین کار می کند و در طول کار کار نمی کند به روز رسانی خودکار پلاگین

چگونه کار می کند

پلاگین توسط تابع Activate_PLugin () فعال می شود که در آن Activate_ Hook (Plugin) فعال می شود.

تابع Activate_Plugin () در هسته در حال حاضر پس از بارگذاری VP متوسط، مورد استفاده قرار می گیرد. این تابع فایل پلاگین اصلی را متصل می کند (و همه آنچه که در آن مشخص شده است) متصل می شود، و سپس از طریق قلاب، تابع فراخوانی مشخص شده را فعال می کند. با توجه به این، تمام توابع و کلاس های پلاگین در عملکرد فراخوانی ما موجود است. اما، از آنجا که تمام قلاب های اصلی WP در حال حاضر در طول بوت متوسط \u200b\u200bکار کرده اند، پس از آن هیچ رویدادی پلاگین در قلاب ها آویزان نیست، به عنوان مثال plugins_loaded، دیگر در هنگام اتصال فایل اصلی پلاگین کار نمی کند. بنابراین، پلاگین ما متصل خواهد شد، اما نه به طور کامل: نه به عنوان آن را که باید اتصال زمانی که در حال حاضر فعال شده است.

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

به عنوان یک قاعده، پس از عملکردهای فراخوانی، 2 رویداد برای قطع توابع وجود دارد: Activated_Plugin و خاموش شدن.

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

شرایط استفاده

تابع کار نمی کند اگر شما آن را در زمان قلاب، به عنوان مثال، plugins_loaded، init. تابع باید به طور مستقیم از فایل اصلی پلاگین نامیده شود. قوانین فعال سازی:

    register_Activation_Hook () باید از فایل Master Plugin نامیده شود، از جایی که دستورالعمل نام پلاگین واقع شده است: ... و نباید از هر قلاب، مانند plugins_loaded یا init نامگذاری شود.

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

    عملکرد قلاب بر روی صفحه نمایش (echo) کار نمی کند. از آنجا که تغییر مسیر و اکو اتفاق می افتد. اما شما می توانید از Die () استفاده کنید.

  1. متغیرهای جهانی (در صورت وجود) باید به طور صریح برای دسترسی به آنها از عملکرد قلاب تعیین شود.

یادداشت های مربوط به منطقه متغیرها

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

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

$ myvar \u003d "چیزی"؛ register_Activation_Hook (__ file__، "myplugin_Activate")؛ تابع myplugin_active () (Global $ myvar؛ echo $ myvar؛ // متغیر برابر با "چیزی" نیست)

به دلیل این ویژگی، متغیرهای جهانی باید همیشه مشخص شوند. تمام متغیرهای جهانی باید به عنوان جهانی تعریف شوند، حتی اگر متغیر در بدن پلاگین نشان داده شود. فقط در این مورد به هر کجا دسترسی خواهد داشت. مثال:

جهانی $ myvar؛ // به وضوح نشان می دهد که این یک متغیر جهانی $ myvar \u003d "چیزی" است؛ register_Activation_Hook (__ file__، "myplugin_Activate")؛ تابع myplugin_active () (جهانی $ myvar؛ echo $ myvar؛ //\u003e چیزی)

بدون قلاب

بازگشت

خالی. هیچ چیز باز نمی گردد

استفاده كردن

Register_Activation_Hook ($ فایل، $ تابع)؛ $ فایل (رشته) (مورد نیاز) راه به چیز اصلی فایل پی اچ پی پلاگین شامل نام پلاگین خود. به طور معمول از PHP ثابت جادویی __File__ استفاده می شود. $ تابع (خط / آرایه / لامبدا) (مورد نیاز)

نام تابع فراخوانی. برای کلاس ها، از آرایه استفاده کنید: آرایه ($ این، نام تابع ")؛ .

این تابع یک متغیر منطقی $ network_wide را دریافت می کند - آیا پلاگین برای کل شبکه سایت ها، با Multisaite فعال می شود.

مثال ها

#one اجرای یک تابع هنگام فعال کردن پلاگین

ما فرض کنید ما یک تابع My_Plugin_Activate () در فایل پلاگین اصلی: WP-محتوا / پلاگین / myplugin / myplugin.php، و سپس به شروع در طول فعال سازی پلاگین از این تابع، استفاده از چنین یک کد:

ثبت نام_ actation_hook (__ file__، "my_plugin_active")؛ تابع my_plugin_Activate () (/ / / / / کد فعال سازی ...)

# 2 شروع یک روش کلاس

اگر پلاگین از کلاس PHP استفاده کند، کد فعال سازی اضافه می شود:

register_Activation_Hook (__ file__، آرایه (my_plugin "،" install "))؛ کلاس My_Plugin Class (تابع استاتیک نصب () (/ / هیچ خروجی ایجاد نمی کنید ...))

# 3 یک روش کلاس را از یک فایل جداگانه اجرا کنید

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

شامل_ONCE __DIR__. "/class-my_plugin.php"؛ Register_Activation_Hook (__ file__، آرایه ("my_plugin"، "on_activate_function"))؛

#four یک کلاس کلاس از کلاس را اجرا کنید

اگر شما در داخل __construct () هستید. مهم، __File__ باید "نگاه" به فایل پلاگین اصلی:

Register_Activation_Hook (__ File__، Array ($ این، "your_method_name"))؛

# 5 بلافاصله پس از فعال شدن پلاگین هر چیزی را بسازید

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

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

هنگامی که این راه حل مناسب نیست، می توانید از گزینه های WP استفاده کنید: داده ها را به گزینه ذخیره کنید و سپس در دسترس بودن گزینه را بررسی کنید و اگر گزینه ای باشد، انجام دهید

// فایل اصلی پلاگین ... My_plugin_activate تابع () (// اضافه کردن یک گزینه به پس از آن اگر آن را به انجام هر کاری Add_Option ( "Activated_Plugin"، "پلاگین-مثل حلزون حرکت کردن.")؛ // در اینجا کد فعال سازی ...) Register_activation_Hook (__ File__، " my_plugin_Activate ")؛ تابع load_plugin () (iS_ADMIN () && get_option ("activated_plugin") \u003d\u003d "Plugin-slug") \u003d\u003d حذف گزینه اضافه شده به طوری که آن را دیگر کار نمی کند / / انجام آنچه شما نیاز دارید ... delete_option ( "Activated_Plugin")؛ // به هر چیزی یک بار، پس از فعال شدن // پلاگین در به عنوان مثال: ADD_ACTION ( "init انجام"، "my_init_function")؛)) ADD_ACTION ( "admin_init"، "load_plugin")؛

یکی دیگر از گزینه ای برای انجام کاری در طول فعال شدن افزونه این است که رویداد خود را مانند این ایجاد کنید:

تابع my_plugin_Activate () (/ / قلاب خود را نصب کنید تا بتوانید از پلاگین Do_Action خود به آن بروید (my_plugin_active)؛) ثبت نام_ activation_hook (__ file__، my_plugin_active ")؛

# 6 یکی دیگر از تظاهرات استفاده از عملکرد

یک پلاگین کوچک نشان دادن نحوه استفاده از عملکرد:

/ * نام پلاگین: شرح آزمون: آزمون * / نیاز به DIRNAME (__ file__). "/ my_other_file.php"؛ / * این کد کار نخواهد کرد. قلاب فعال باید از فایل اصلی نامیده شود. Register_Activation_Hook (Dirname (__ file__). "/ my_other_file.php"، "my_other_function")؛ * / // این یک کد کاری است. Register_Activation_Hook (__ File__، "test_Activated")؛ / * این گزینه تأیید صحیح و دسترسی به متغیرهای جهانی است. متغیرهای جهانی باید به وضوح اعلام شود. بدون این شما به آنها دسترسی ندارید. * / global $ some_var؛ $ some_var \u003d "سلام"؛ // تابع test_Ardivated () (/////-$ some_var نخواهد بود hey global $ some_var؛ // $ some_var سلام به همان اندازه // این تابع در فایل "my_other_file.php" تعریف شده است "my_other_function ()؛ * گزینه کار نخواهد کرد. اگر شما نیاز به ضبط سیاهههای مربوط به یک فایل موقت دارید، از Fopen / Fwrite استفاده کنید. اگر می خواهید بررسی کنید که آیا قلاب فعال سازی کار می کند، از خروج () در داخل تابع قلاب استفاده کنید. * / echo "test_activated به نام ! "؛)

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

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

در عادی وردپرس نصب ثبت نام، مجوز و بازنشانی رمز عبور فایل 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-load.php) اعلام کرد WP_INSTALLING CONSTANT. حضور آن باعث ایجاد وردپرس برای بارگذاری پلاگین ها نمی شود.

همانطور که در مورد صفحه ثبت نام، تنها برای رفع طرح که در آن ضروری است، باقی مانده است. شما همچنین می توانید متن پیام های نمایش داده شده را تغییر دهید (در این مورد، فراموش نکنید که یک دامنه متنی از 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.

  • زنگ.

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