So erstellen Sie Ihre eigene Registrierungsseite in WordPress Multisite. So erstellen Sie Ihre eigene Anmeldeseite in WordPress Multisite Unproven signup php rid

In den letzten Jahren hat sich das Webhosting dramatisch verändert. Webhosting-Dienste haben die Leistung von Websites verändert. Es gibt verschiedene Arten von Diensten, aber heute werden wir über die Optionen sprechen, die Reseller-Hosting-Anbietern zur Verfügung stehen. Sie sind Linux-Reseller-Hosting und Windows-Reseller-Hosting. Bevor wir die grundlegenden Unterschiede zwischen den beiden verstehen, wollen wir herausfinden, was Reseller-Hosting ist.

Reseller-Hosting

Einfach ausgedrückt ist Reseller-Hosting eine Form des Webhostings, bei der ein Kontoinhaber seinen dedizierten Festplattenspeicher und die zugeteilte Bandbreite zum Weiterverkauf an die Websites Dritter nutzen kann. Manchmal kann ein Reseller einen dedizierten Server von einem Hosting-Unternehmen (Linux oder Windows) mieten und an Dritte weitervermieten.

Die meisten Website-Benutzer verwenden entweder Linux oder Windows. Das hat mit der Betriebszeit zu tun. Beide Plattformen stellen sicher, dass Ihre Website zu 99 % verfügbar ist.

1.Anpassung

Einer der Hauptunterschiede zwischen einem Linux-Reseller-Hostingplan und dem von Windows bereitgestellten ist die Anpassung. Während Sie mit beiden Playern auf verschiedene Weise experimentieren können, ist Linux viel anpassbarer als Windows. Letzteres hat mehr Funktionen als sein Pendant und deshalb finden viele Entwickler und Administratoren Linux sehr kundenfreundlich.

2. Anwendungen

Verschiedene Reseller-Hosting-Services haben unterschiedliche Anwendungen. Linux und Windows haben beide ihre eigene Reihe von Anwendungen, aber letzteres hat einen Vorteil, wenn es um Anzahl und Vielseitigkeit geht. Das hat mit der Open-Source-Natur von Linux zu tun. Jeder Entwickler kann seine App auf die Linux-Plattform hochladen, was sie zu einem attraktiven Hosting-Anbieter für Millionen von Website-Besitzern macht.

Beachten Sie jedoch, dass einige Anwendungen möglicherweise nicht einfach funktionieren, wenn Sie Linux für das Webhosting verwenden, aber gleichzeitig das Windows-Betriebssystem verwenden.

3. Stabilität

Während beide Plattformen stabil sind, ist Linux Reseller Hosting stabiler von beiden. Da es sich um eine Open-Source-Plattform handelt, kann sie in mehreren Umgebungen arbeiten. Diese Plattform kann von Zeit zu Zeit modifiziert und weiterentwickelt werden.

4.NET-Kompatibilität

Es ist nicht so, dass Linux Windows in jeder Hinsicht überlegen ist. Wenn es um .NET-Kompatibilität geht, steht Windows im Rampenlicht. Webanwendungen lassen sich problemlos auf einer Windows-Hosting-Plattform entwickeln.

5. Kostenvorteile

Beide Hosting-Plattformen sind erschwinglich. Aber wenn Sie eine Geldknappheit verspüren, sollten Sie sich für Linux entscheiden. Es ist kostenlos und wird deshalb von so vielen Entwicklern und Systemadministratoren auf der ganzen Welt gewählt.

6. Einfache Einrichtung

Windows ist einfacher einzurichten als sein Gegenstück. Alles in allem hat Windows all die Jahre seine Benutzerfreundlichkeit beibehalten.

7 Sicherheit

Entscheiden Sie sich für Linux-Reseller-Hosting, da es sicherer ist als Windows. Dies gilt insbesondere für Personen, die ihr E-Commerce-Geschäft betreiben.

Fazit

Die Wahl zwischen den beidenhängt von Ihren Anforderungen und der Kostenflexibilität ab. Beide Hosting-Dienste haben einzigartige Vorteile. Während Windows einfach einzurichten ist, ist Linux kostengünstig, sicher und vielseitiger.



Im März dieses Jahres hatte ich eine sehr schlechte Erfahrung mit einem Medienunternehmen, das sich weigerte, mich zu bezahlen und meine E-Mails zu beantworten. Sie schulden mir immer noch Tausende von Dollar und das Gefühl der Wut durchdringt mich jeden Tag. Es stellt sich heraus, dass ich nicht allein bin und Hunderte anderer Website-Besitzer im selben Boot sitzen. Das gehört bei digitaler Werbung einfach dazu.

Um ehrlich zu sein, habe ich diesen Blog schon lange und bin in der Vergangenheit in verschiedenen Werbenetzwerken herumgesprungen. Nachdem ich die Anzeigenblöcke von diesem Unternehmen entfernt hatte, das mich versteift hatte, war ich wieder am Anfang. Das sollte ich auch beachten Ich habe Googles AdSense-Produkt nie wirklich gemocht, nur weil es sich anfühlt wie der „Bottom of the Barrel“ der Display-Werbung – nicht aus Qualitätssicht, sondern aus Umsatzsicht.

Soweit ich weiß, möchten Sie Google-Werbung auf Ihrer Website, aber Sie möchten auch, dass andere große Unternehmen und Agenturen dies tun. Auf diese Weise maximieren Sie die Nachfrage und den Umsatz.

Nach meiner negativen Erfahrung wurde mir eine Firma namens Newor Media empfohlen. Und wenn ich ehrlich bin, war ich zuerst nicht überzeugt, hauptsächlich weil ich nicht viele Informationen darüber finden konnte. Ich habe ein paar anständige Rezensionen auf anderen Seiten gefunden, und nachdem ich mit jemandem dort gesprochen hatte, beschloss ich, es zu versuchen Ich werde sagen, dass sie SUPER hilfreich sind. Jedes Netzwerk, mit dem ich jemals gearbeitet habe, war ziemlich kurz mit mir, was Antworten und den Einstieg betrifft. Sie beantworteten jede Frage und es war ein wirklich ermutigender Prozess.

Ich schalte die Anzeigen seit ein paar Monaten und die Einnahmen stimmen ungefähr mit dem überein, was ich mit der anderen Firma verdient habe. Ich kann also nicht wirklich sagen, ob sie so viel besser sind als andere, aber wo sie sich abheben ist ein Punkt, den ich wirklich hervorheben möchte. Die Kommunikation mit ihnen ist anders als bei jedem anderen Netzwerk, mit dem ich jemals gearbeitet habe. Hier ist ein Fall, in dem sie wirklich anders sind:

Sie haben mir die erste Zahlung pünktlich mit Paypal zugeschickt. Aber weil ich nicht in den USA bin (und das passiert glaube ich jedem), wurde mir eine Gebühr von Paypal abgezogen. Ich habe meinem Vertreter eine E-Mail darüber geschickt und gefragt, ob es eine Möglichkeit gibt, dies in Zukunft zu vermeiden.

Sie sagten, dass sie die Gebühr nicht vermeiden könnten, aber dass sie ALLE GEBÜHREN ERSTATTEN würden ... EINSCHLIESSLICH DER LETZTEN ZAHLUNG! Nicht nur das, sondern die Erstattungszahlung ging innerhalb von 10 MINUTEN ein! Wann hast du jemals eine solche Anfrage stellen konnten, ohne dass sie an die "Finanzabteilung" weitergeleitet werden mussten, um dann nie beantwortet zu werden.

Unterm Strich liebe ich dieses Unternehmen. Vielleicht kann ich woanders mehr verdienen, ich bin mir nicht wirklich sicher, aber sie haben einen Verlag fürs Leben bei mir. Ich bin keine riesige Website und ich erwirtschafte keine Unmengen an Einnahmen, aber ich fühle mich wie ein sehr wichtiger Kunde, wenn ich mit ihnen spreche. Es ist wirklich ein Hauch frischer Luft in einer Branche, die voll von Betrug und mangelnder Reaktionsfähigkeit ist.

Mikrocomputer, die 2012 von der Raspberry Pi Foundation entwickelt wurden, waren äußerst erfolgreich darin, die Kreativität kleiner Kinder zu wecken, und dieses in Großbritannien ansässige Unternehmen begann, Startup-Programme zum Erlernen des Programmierens wie pi-top und Kano anzubieten. Es gibt jetzt ein neues Startup, das die Pi-Elektronik nutzt, und das Gerät ist als Pip bekannt, eine Handheld-Konsole, die einen Touchscreen, mehrere Anschlüsse, Steuertasten und Lautsprecher bietet. Die Idee hinter dem Gerät ist es, jüngere Personen mit einem Retro-Spielgerät zu beschäftigen, das aber auch eine Code-Lernerfahrung über eine webbasierte Plattform bietet.

Die erstaunliche Softwareplattform, die mit Pip angeboten wird, bietet die Möglichkeit, mit dem Programmieren in Python, HTML/CSS, JavaScript, Lua und PHP zu beginnen. Das Gerät bietet Schritt-für-Schritt-Tutorials, um Kindern den Einstieg in die Codierung zu erleichtern, und ermöglicht ihnen sogar, LEDs zum Blinken zu bringen. Während Pip noch ein Prototyp ist, wird es sicherlich ein großer Erfolg in der Branche sein und Kinder ansprechen, die Interesse am Programmieren haben, und ihnen die Ausbildung und die Ressourcen bieten, die sie benötigen, um in jungen Jahren mit dem Programmieren zu beginnen.

Zukunft der Codierung

Das Codieren hat eine große Zukunft, und selbst wenn Kinder das Codieren nicht als Beruf nutzen, können sie davon profitieren, das Codieren mit diesem neuen Gerät zu lernen, das es einfacher denn je macht. Mit Pip lernen selbst die jüngsten Programmierbegeisterten verschiedene Sprachen und sind auf dem besten Weg, eigene Codes, eigene Spiele, eigene Apps und mehr zu erstellen. Es ist die Zukunft des elektronischen Zeitalters und Pip ermöglicht die Beherrschung der Grundbausteine ​​der Codierung.
Informatik ist zu einem wichtigen Teil der Bildung geworden und mit Geräten wie dem neuen Pip können Kinder beginnen, ihre Bildung zu Hause zu verbessern und dabei Spaß zu haben. Codieren geht weit über das einfache Erstellen von Websites oder Software hinaus. Es kann verwendet werden, um die Sicherheit in einer Stadt zu erhöhen, bei der Forschung im medizinischen Bereich zu helfen und vieles mehr. Da wir heute in einer von Software dominierten Welt leben, ist Programmieren die Zukunft und es ist wichtig, dass alle Kinder zumindest ein grundlegendes Verständnis dafür haben, wie es funktioniert, auch wenn sie diese Fähigkeiten nie beruflich nutzen. Im Hinblick auf die Zukunft wird das Codieren ein entscheidender Bestandteil des täglichen Lebens sein. Es wird die Sprache der Welt sein, und die Unkenntnis von Computern oder deren Funktionsweise kann zu Herausforderungen führen, die genauso schwer zu überwinden sind wie Analphabetismus.
Die Codierung wird auch große Veränderungen in der Spielewelt bewirken, insbesondere wenn es um Online-Glücksspiele geht, einschließlich des Zugangs zu Online-Casinos. Um zu sehen, wie das Programmieren die Spielewelt bereits verbessert hat, werfen Sie einen Blick auf einige erstklassige Casinoseiten, die auf Programmieren angewiesen sind. Werfen Sie einen kurzen Blick darauf, um es auszuprobieren und zu sehen, wie Codierung realistische Umgebungen online darstellen kann.

Wie Pip Kinder einbezieht

Wenn es darum geht, Programmieren zu lernen, haben Kinder viele Möglichkeiten. Es gibt eine Reihe von Geräten und Hardware-Gizmos, die gekauft werden können, aber Pip verfolgt mit ihrem Gerät einen anderen Ansatz. Die Portabilität des Geräts und der Touchscreen bieten einen Vorteil gegenüber anderen Codiergeräten, die auf dem Markt sind. Pip wird zusätzlich zum Raspberry Pi HAT-System vollständig mit elektronischen Komponenten kompatibel sein. Das Gerät verwendet Standardsprachen und verfügt über grundlegende Tools und ist ein perfektes Gerät für jeden Programmieranfänger. Ziel ist es, alle Barrieren zwischen Idee und Kreation zu beseitigen und Werkzeuge sofort einsatzbereit zu machen. Einer der anderen großen Vorteile von Pip ist, dass es eine SD-Karte verwendet, sodass es auch als Desktop-Computer verwendet werden kann, wenn es an einen Monitor und eine Maus angeschlossen ist.
Das Pip-Gerät würde Kindern und interessierten Programmieranfängern mit Begeisterung beim Lernen und Üben von Programmieren helfen. Durch das Angebot einer Kombination aus Aufgabenerfüllung und Basteln zur Lösung von Problemen wird das Gerät sicherlich die jüngere Generation ansprechen. Das Gerät ermöglicht es diesen jungen Programmierern dann, zu fortgeschritteneren Programmierebenen in verschiedenen Sprachen wie JavaScript und HTML/CSS überzugehen. Da das Gerät einer Spielkonsole nachempfunden ist, wird es sofort die Aufmerksamkeit von Kindern auf sich ziehen und sie dazu anregen, schon in jungen Jahren etwas über das Programmieren zu lernen. Es enthält auch einige vorinstallierte Spiele, um die Aufmerksamkeit auf sich zu ziehen, wie Pac-Man und Minecraft.

Innovationen kommen

Zukünftige Innovationen hängen weitgehend von den aktuellen Fähigkeiten eines Kindes zum Programmieren und seinem Gesamtverständnis des Prozesses ab. Wenn Kinder in einem frühen Alter das Programmieren lernen, indem sie Geräte wie den neuen Pip verwenden, werden sie die Fähigkeiten und das Wissen erwerben, um in Zukunft erstaunliche Dinge zu erschaffen. Dies könnte die Einführung neuer Spiele oder Apps oder sogar Ideen sein, die zum Leben erweckt werden können, um bei der medizinischen Forschung und Behandlung zu helfen. Es gibt unendlich viele Möglichkeiten. Da unsere Zukunft von Software und Computern gesteuert wird, ist es am besten, jung anzufangen, weshalb der neue Pip auf die junge Zielgruppe ausgerichtet ist. Durch das Angebot eines Konsolengeräts, das Spiele spielen und gleichzeitig Programmierkenntnisse vermitteln kann, sind junge Mitglieder der Gesellschaft auf dem besten Weg, in Zukunft die Entwickler von Software zu sein, die unser aller Leben verändern wird. Dies ist erst der Anfang, aber es ist etwas, das Millionen von Kindern auf der ganzen Welt zu lernen und zu meistern beginnen. Mit der Verwendung von Geräten wie Pip werden die Programmiergrundlagen abgedeckt und Kinder lernen schnell die verschiedenen Programmiersprachen, die beim Eintritt ins Erwachsenenalter auf erstaunliche Wege führen können.

Lassen Sie uns anstelle der standardmäßigen wp-signup.php unsere eigene Multisite-Registrierungsseite erstellen.

Bei einer typischen WordPress-Installation wird die Registrierungsseite (Login, Passwort zurücksetzen) in der Datei wp-login.php angezeigt.

  • /wp-login.php - Autorisierung
  • /wp-login.php?action=register - Registrierung
  • /wp-login.php?action=lostpassword - Passwort zurücksetzen

Es gibt separate Bedingungen für Multisite in wp-login.php. Wenn Sie also auf einer Multisite auf /wp-login.php?action=register klicken, leitet WordPress zur Seite /wp-signup.php um. In vielen Themen sieht die Seite nicht sehr attraktiv aus, also werden wir unsere eigenen machen.

Hauptseite des Netzwerks

Standardmäßig öffnet WordPress die Anmeldeseite (wp-signup.php) auf der Hauptdomäne (Website) des Webs. Es ist jedoch möglich, für jede Site im Netzwerk eine separate Registrierungsseite zu erstellen, auch wenn sie unterschiedliche Themen haben. Wir betrachten den Fall, dass alle Sites im Netzwerk ihre eigene Registrierungsseite haben, aber das gleiche Thema verwendet wird und die Sites sich nur in der Sprache unterscheiden. Wenn andere Themen verwendet werden, ist mehr Code erforderlich.

Funktionen.php?

Nein. Der Name dieser Datei scheint in jedem WordPress-Artikel erwähnt zu werden. In unserem Fall ist es unter Berücksichtigung der Tatsache, dass die Registrierungsfunktion für mehrere Sites ausgelegt ist, sinnvoll, sie auf MU-Plugins zu verschieben, die beim Öffnen einer beliebigen Site geladen werden.

Lyrischer Exkurs

Es ist erwähnenswert, dass MU-Plugins vor normalen Plugins geladen werden und bevor der WordPress-Kern vollständig geladen ist, sodass das Aufrufen einiger Funktionen zu fatalen Fehlern in PHP führen kann. Dieses "frühe" Laden hat seine Vorteile. Nehmen wir an, Sie können sich in keinem Design an einige Aktionen halten, die funktionieren, noch bevor die Datei functions.php aus dem Design geladen wurde. Ein Beispiel hierfür sind Aktionen aus dem Jetpack-Plugin der Form jetpack_module_loaded_related-posts (related-posts ist der Name des Moduls), mit denen es möglich ist, die Aktivität von Modulen in Jetpack zu verfolgen. Diese Aktion kann nicht aus der Designdatei "angehängt" werden, da die Aktion bereits ausgelöst wurde, bevor das Design geladen wurde - Plugins werden vor Designs geladen. Sie können sich ein allgemeines Bild der WordPress-Ladereihenfolge auf der Aktionsreferenzseite im Codex ansehen.

Dateireihenfolge

MU-Plugins können eine beliebige Anzahl von Dateien und eine beliebige Struktur enthalten, die Ihnen logisch erscheint. Ich folge einer Hierarchie wie dieser:

|-mu-plugins |-|-load.php |-|-|-selena-network |-|-|-|-anmeldung |-|-|-|-|-plugin.php |-|-|-| -|-... |-|-|-|-jetpack |-|-|-|-|-plugin.php

In der Datei load.php sind alle notwendigen „Plugins“ für unser Netzwerk verbunden:

// Traslates für alle Addons laden load_muplugin_textdomain("selena_network", "/selena-network/languages/"); // Netzwerkanmeldung erfordert WPMU_PLUGIN_DIR . "/selena-network/signup/plugin.php"; // Andere Plugins // erfordern WPMU_PLUGIN_DIR ...

Plugin-Ordner werden im selena-network-Ordner gespeichert, jeder hat seine eigene plugin.php , die wir in load.php einschließen. Dies gibt Flexibilität und die Möglichkeit, bestimmte Dinge schnell zu deaktivieren und zu aktivieren.

URL der Registrierungsseite

Der Filter wp_signup_location wird verwendet, um die Adresse der Anmeldeseite anzugeben. Es befindet sich in der Datei wp-login.php und ist für die Weiterleitung zu wp-signup.php verantwortlich.

Case „register“ : if (is_multisite()) ( wp_redirect(apply_filters("wp_signup_location", network_site_url("wp-signup.php"))); exit;

Fügen wir unsere Funktion zu mu-plugins/selena-network/signup/plugin.php hinzu, die die Adresse der Registrierungsseite auf der aktuellen Site angibt:

Funktion selena_network_signup_page ($url) ( return home_url () . "/signup/"; ) add_filter ("wp_signup_location", "selena_network_signup_page", 99);

selena_network ist ein Präfix, das ich in den Namen aller Funktionen in MU-Plugins auf meiner Website verwende, um Kollisionen zu vermeiden. Es sollte durch Ihr eigenes eindeutiges Präfix ersetzt werden. Fügen Sie die Filterpriorität 99 hinzu, da einige Plugins wie bbPress und BuddyPress diese Adresse mit ihrer eigenen überschreiben können (MU-Plugins werden vor normalen Plugins geladen, siehe oben). Beachten Sie, dass home_url() anstelle von network_site_url() verwendet wird, um den Besucher auf derselben Domain zu halten. Als Adresse kann eine beliebige URL verwendet werden.

Seitenerstellung

Lassen Sie uns nun eine Seite mit der Adresse site.com/signup/ über die übliche Schnittstelle erstellen, und im untergeordneten Themenordner ist die Vorlage für unsere neue Seite page-signup.php . Anstelle des Wortes „Anmeldung“ können Sie eine eindeutige ID verwenden.

Innerhalb der neuen Vorlage müssen Sie die Funktion selena_network_signup_main() aufrufen, die das Anmeldeformular anzeigt.

Es ist erwähnenswert, dass der gesamte Prozess mit Vorlagen optional ist und Sie stattdessen Ihren eigenen Shortcode erstellen können, der auch die Funktion selena_network_signup_main() aufruft.

wp-signup.php und wp-activate.php

Lassen Sie uns nun eine Funktion erstellen, die das Registrierungsformular anzeigt. Kopieren Sie dazu die Dateien wp-signup.php und wp-activate.php aus dem WordPress-Root nach mu-plugings/selena-network/signup/ (und vergessen Sie nicht, sie in mu-plugins/selena-network einzufügen /signup/plugin.php) . Weitere Dateimanipulationen sind äußerst schwierig und langwierig zu beschreiben, sodass Sie sie selbst durchführen müssen. Ich werde nur beschreiben, was genau getan werden muss, und die Quelldateien meines Projekts veröffentlichen:

  1. Entfernen Sie am Anfang der Datei alle require , Funktionsaufrufe und anderen Code außerhalb von Funktionen.
  2. Benennen Sie alle Funktionen um, indem Sie den Namen eindeutige Präfixe hinzufügen.
  3. Wickeln Sie den unteren Teil des wp-signup.php-Codes in die Funktion selena_network_signup_main ein und schreiben Sie ganz am Anfang global $active_signup; .
  4. Ersetzen Sie das Layout an den richtigen Stellen durch Ihr eigenes.

Innerhalb von wp-activate.php musst du dasselbe tun:

  1. Entfernen Sie den gesamten Code außerhalb von Funktionen, packen Sie das Layout in eine separate Funktion.
  2. Gegebenenfalls Layout ändern.

Die Datei wp-activate.php ist für die Kontoaktivierungsseite verantwortlich. Wie bei der Registrierungsseite müssen Sie dafür eine separate Vorlage erstellen, in der Sie die Funktion aus der Datei wp-activate.php aufrufen müssen.

Senden von Aktivierungs-E-Mails

Die Registrierungsseite sendet eine E-Mail mit einem Link zum Aktivieren des Kontos an den Besucher. Standardmäßig wird dies von der Funktion wpmu_signup_user_notification() aus der Datei ms-functions.php gehandhabt. Seine Funktionalität kann für seine Funktion ausgeliehen werden. Der Grund, warum Sie diese Funktion nicht mehr verwenden müssen, ist, dass sie einen Link zur Kontoaktivierung von wp-activate.php sendet. Sie können diese Funktion mit dem Filter wpmu_signup_user_notification „ausschalten“, indem Sie ihn auf „false“ setzen (wenn dies nicht getan wird, wird der Aktivierungsbrief zweimal gesendet, ok, eigentlich zwei verschiedene Briefe).

Funktion armyofselenagomez_wpmu_signup_user_notification($user, $user_email, $key, $meta = array()) ( // ... // Code von wpmu_signup_user_notification() function wp_mail($user_email, wp_specialchars_decode($subject), $message, $message_headers) ; false zurückgeben; ) add_filter("wpmu_signup_user_notification", "armyofselenagomez_wpmu_signup_user_notification", 10, 4);

Infolgedessen ist die Registrierungsseite im Selena-Theme viel sauberer und ordentlicher geworden.

Fazit

Es gibt viele andere nicht sehr korrekte Methoden im Internet, um dasselbe zu tun - Apache-Umleitungen, AJAX-Formulare, die ohne Java Script nicht funktionieren, usw. Ich mochte das alles nicht wirklich, also habe ich versucht, es so richtig wie möglich zu machen auf meiner eigenen Seite möglich.

Ich weise darauf hin, dass Sie die Dateien sorgfältig bearbeiten und versuchen sollten, nicht zu sehr von den Originalen abzuweichen, damit in Zukunft, wenn WordPress die Dateien wp-signup.php und wp-activate.php ändert, es einfacher wäre, sie zu vergleichen sie, um Änderungen zu finden.

Vergessen Sie nicht, sich den Quellcode aller oben beschriebenen Funktionen anzusehen, um vollständig zu verstehen, was und wie im Code passiert.

Bonus. Spammer-Schutz

Selbst die kleinsten WordPress-Sites werden oft mit Spam-Registrierungen bombardiert. Man kann endlos Bedingungen zum Filtern von Bots schreiben, oft eher wie ein Versuch, künstliche Intelligenz zu schaffen 🙂 Bei einer Multisite hat mir die übliche Weiterleitung im Apache sehr geholfen, mit der ich gebeten habe, beim Öffnen von /wp-signup 404 auszugeben. php und /wp-acitvate.php (ich bin kein Apache-Setup-Experte, daher sind meine Regeln möglicherweise nicht sehr korrekt).

RewriteEngine On RewriteBase / RewriteRule ^wp-signup\.php - RewriteRule ^wp-activate\.php - # BEGIN WordPress # Standard-WordPress-Regeln :) # ... # END WordPress

P.S. Ich versuche, einige Dinge von Drittanbietern so detailliert wie möglich zu beschreiben, denn als ich anfing, gab es manchmal niemanden, der viele Dinge aufforderte und erklärte. Ich glaube auch, dass solche kleinen Tipps zu anderen Materialien jemanden dazu bringen werden, etwas Neues zu lernen und sein Wissensgebiet zu erweitern. Die RewriteRule-Einträge verwenden reguläre Ausdrücke, sie sind überhaupt nicht kompliziert, zum Beispiel bedeutet das Zeichen ^ den Anfang einer Zeile.

Ermöglicht es Ihnen, eine WordPress-Installation für mehrere Websites gleichzeitig zu verwenden. In diesem Fall erhält jede Site ihre eigenen Tabellen in der Datenbank mit einem eindeutigen Präfix.

Tabellen mit Daten von registrierten Benutzern sind allen Netzwerkseiten gemeinsam. Dies ist ein definitives Plus, und wenn Sie sich einmal registrieren, können Sie auf mehrere Websites zugreifen. Darüber hinaus kann dasselbe Konto auf jeder Site unterschiedliche Rechte haben. Beispielsweise kann ein Benutzer auf einer Site ein Redakteur und auf einer anderen ein Administrator sein.

In einer typischen WordPress-Installation wird die Seite zum Anmelden, Anmelden und Zurücksetzen des Passworts in der Datei wp-login.php angezeigt.

  • wp-login.php - Autorisierung
  • wp-login.php?action=register - Registrierung
  • wp-login.php?action=lostpassword - Passwort zurücksetzen

Im Multisite-Modus verhält sich der WordPress-Kern etwas anders und wenn Sie auf den Link wp-login.php?action=register klicken, wird er zu wp-signup.php umgeleitet. Dies ist Ihre Netzwerkregistrierungsseite, die standardmäßig mit WordPress geliefert wird.

Neben der Registrierung regulärer Benutzerkonten können Sie auch eine neue Site darauf erstellen, wenn der Superadministrator diese Funktion in den Netzwerkeinstellungen aktiviert hat (Netzwerkadministrator → Einstellungen → Netzwerkeinstellungen).

Bei den meisten Themes sieht die Registrierungsseite nicht sehr gut aus. Viele Themen verwenden CSS-Frameworks wie Bootstrap und ihre eigenen spezifischen Klassen, um verschiedene Elemente auf der Seite zu gestalten, daher ist es schwierig, einen einzigen HTML-Code zu schreiben, der für alle passt.

Aber verzweifeln Sie nicht, wenn die Seite unordentlich aussieht. Die Datei wp-signup.php ist anfangs großartig, wenn Sie keine Zeit haben, jedes Detail der Website durchzuarbeiten – Sie können sich auf andere, wichtigere Seiten und Inhalte konzentrieren.

Wenn Sie bereit sind, Ihre eigene Anmeldeseite zu erstellen, ist wp-signup.php eine gute Referenz und ein Beispiel, um Ihnen zu helfen, die Bandbreite der Funktionen zu verstehen, die WordPress für die Verarbeitung und Validierung von Benutzereingaben und das Erstellen neuer Konten bietet.

Hauptseite des Netzwerks

Standardmäßig öffnet WordPress die Anmeldeseite (wp-signup.php) auf der Hauptdomäne (Website) des Webs. Sie können jedoch Registrierungsseiten für jede Site im Netzwerk erstellen, auch wenn sie Themen haben.

Wir werden den Fall betrachten, wenn alle Sites im Netzwerk dasselbe Thema verwenden, aber jede von ihnen eine Registrierungsseite hat. Die Seiten unterscheiden sich in der Sprache (Englisch und Russisch), daher wird die Registrierungsseite in der „Muttersprache“ der Seite angezeigt. Falls Websites unterschiedliche Themen verwenden, hängt alles davon ab, um welche Themen es sich handelt, ob dasselbe Layout für sie geeignet ist (eine großartige Situation, die Sie dazu bringen kann, alle Ihre Themen zu vereinheitlichen) oder ob es sich lohnt, Seiten einzeln zu entwickeln.

functions.php-Alternative

Dateireihenfolge

MU-Plugins können eine beliebige Anzahl von Dateien und Strukturen enthalten, die Ihnen logisch erscheinen. Ich folge einer Hierarchie wie dieser:

| mu-Plugins | | laden.php | | Selena-Netzwerk | | | anmelden | | | | plugin.php | | | ... | | | Jetpack | | | | plugin.php

In der Datei load.php sind Übersetzungen und alle notwendigen „Plugins“ verbunden:

// Übersetzungen für MU-Plugins laden load_muplugin_textdomain("selena_network", "/selena-network/languages/"); // Funktionalität für die Registrierungsseite erfordert WPMU_PLUGIN_DIR . "/selena-network/signup/plugin.php"; // Ein weiteres Plugin // erfordert WPMU_PLUGIN_DIR ...

Plugin-Ordner werden im Selena-Netzwerkverzeichnis gespeichert. Jedes hat seine eigene plugin.php , die wir in load.php einbinden. Dies bietet Flexibilität und die Möglichkeit, einzelne Komponenten eines funktionierenden Projekts im Notfall sofort zu deaktivieren und zu aktivieren.

Registrierungsseite

Nachdem wir herausgefunden haben, wo und wie wir den Code schreiben werden, können wir mit der Erstellung der Registrierungsseite fortfahren.

Lassen Sie uns eine Seite mit der Adresse example.org/signup/ über die übliche Schnittstelle erstellen. Als Adresse können Sie jede URL verwenden, die für Ihr Projekt geeignet erscheint.

Weiterleitung zur erforderlichen Registrierungsseite

Damit WordPress von unserer neuen Registrierungsseite erfährt und darauf umleitet, wenn Sie auf den Link „Anmelden“ klicken, wird der Filter wp_signup_location verwendet. Es befindet sich in wp-login.php und ist standardmäßig für die Weiterleitung zu wp-signup.php verantwortlich.

Case "register" : if (is_multisite()) ( wp_redirect(apply_filters("wp_signup_location", network_site_url("wp-signup.php"))); exit; // ...

Wie Sie sich erinnern, wird die Registrierungsseite standardmäßig auf der Hauptnetzwerkdomäne geöffnet. Deshalb wird hier network_site_url() verwendet.

Fügen wir unseren Handler dem Filter in mu-plugins/selena-network/signup/plugin.php hinzu, der die Adresse der Registrierungsseite auf der aktuellen Site angibt:

Funktion selena_network_signup_page($url) ( return home_url("signup"); ) add_filter ("wp_signup_location", "selena_network_signup_page", 99);

selena_network ist ein Präfix, das ich in den Namen aller Funktionen in MU-Plugins auf meiner Website verwende, um Kollisionen zu vermeiden. Es sollte durch mein eigenes eindeutiges Präfix ersetzt werden. Fügen Sie die Filterpriorität 99 hinzu, da einige Plugins wie bbPress und BuddyPress diese Adresse mit ihrer eigenen überschreiben können (MU-Plugins werden vor normalen Plugins geladen, siehe oben).

Beachten Sie, dass home_url() verwendet wird, das im Gegensatz zu network_site_url() die Adresse der aktuellen Website zurückgibt, nicht die Hauptwebsite des Netzwerks.

wp-signup.php-Funktionalität

Die Datei wp-signup.php enthält große Menge Funktionen und Code. Um das Gesamtbild zu sehen, können Sie Code-Folding verwenden. Im Englischen heißt das in der Regel „Code Folding“.

Ganz am Anfang der Datei von den Zeilen 1 bis 80 (in Version 4.1.1) werden verschiedene Prüfungen durchgeführt und mit get_header() der „Anfang“ der Seite angezeigt.

Als nächstes werden viele Methoden deklariert, und bevor wir anfangen, mit ihnen zu arbeiten, lohnt es sich zu verstehen, was jede Funktion tut. Viele von ihnen verwenden oft andere Funktionen mit dem Präfix wpmu_ , die alle in der Datei wp-includes/ms-functions.php deklariert sind. Dieser Abschnitt ist schwer zu verstehen, ohne den Code selbst zu sehen. Nachfolgend finden Sie eine kurze Beschreibung der Hauptfunktionen, falls Sie auf Schwierigkeiten stoßen sollten.

  • wpmu_signup_stylesheet() - Zusätzliches CSS auf der Registrierungsseite ausgeben.
  • show_blog_form() - Felder für die Registrierung der Website (Adresse, Name, Sichtbarkeit für Suchmaschinen).
  • validate_blog_form() – Validiert die eingegebene Website-Adresse und den Titel mit wpmu_validate_blog_signup() .
  • show_user_form() - Felder für die Benutzerregistrierung (Login und E-Mail-Adresse).
  • validate_user_form() - Validierung des eingegebenen Logins und der E-Mail-Adresse. Mail mit wpmu_validate_user_signup() .
  • signup_another_blog() - Felder zum Registrieren neuer Websites mit show_blog_form() für Benutzer, die bereits auf der Website registriert sind.
  • validate_another_blog_signup() – Validiert die Site-Adresse und den Titel mit validate_blog_form() .
  • signup_user() ist die Hauptfunktion zum Anzeigen der Anmeldeseitenfelder.
  • validate_user_signup() – Validiert Benutzername und E-Mail-Adresse. Mail mit validate_user_form() .
  • signup_blog() - Felder zur Eingabe der Adresse, des Namens und der Sichtbarkeit der Website (zweiter Registrierungsschritt) mit show_blog_form() .
  • validate_blog_signup() - validiert die Anmeldung, E-Mail-Adresse. E-Mail, Adresse und Site-Name.

Ganz unten in der Datei wp-signup.php (ab Zeile 646 in Version 4.1.1) befindet sich die Hauptlogik der Anmeldeseite, die alle oben beschriebenen Methoden verwendet. Dieser Teil des Codes wird nicht in eine Funktion verschoben. Am Ende wird get_footer() aufgerufen.

Kopieren Sie die Funktionalität von wp-signup.php

Als nächstes wird das Verfahren zum Kopieren von wp-signup.php in MU-Plugins und zum Vornehmen von Änderungen an der „Verzweigung“ beschrieben. Vielleicht scheint dies nicht der richtige Weg zu sein. Stattdessen können Sie Ihre eigenen Funktionen zum Validieren und Anzeigen von Formularen von Grund auf neu schreiben, indem Sie Klassen statt regulärer Funktionen verwenden. Meiner Meinung nach hat wp-signup.php bereits die gesamte notwendige Logik für unsere Seite, es bleiben nur noch kleine Änderungen vorzunehmen.

Beim Aktualisieren von WordPress ändert sich auch die wp-signup.php von Zeit zu Zeit, was jedoch nicht bedeutet, dass Sie Ihren „Fork“ mit jedem Release synchronisieren müssen. Die Funktionen in wp-signup.php machen im Grunde nichts anderes als HTML-Ausgabe, Datenvalidierung, Konto- und Site-Erstellung und die in ms-functions.php deklarierten Methoden mit wpmu_-Präfix.

Lassen Sie uns eine Funktion erstellen, die das Registrierungsformular auf der Seite anzeigt. Kopieren Sie dazu wp-signup.php aus dem WordPress-Root nach mu-plugings/selena-network/signup/ . Verbinden Sie es innerhalb von mu-plugins/selena-network/signup/plugin.php).

Erfordert WPMU_PLUGIN_DIR . "/selena-network/signup/wp-signup.php";

Entfernen Sie alle erforderlichen und unnötigen Überprüfungen ganz am Anfang der kopierten Datei. In Version 4.1.1 ist dies der gesamte Code von Zeile 1 bis 80.

Wir sind jetzt bereit, die Hauptfunktion zum Anzeigen des Anmeldeformulars zu erstellen. Dazu übertragen wir die gesamte Logik von Zeile 646 bis zum Ende der Datei in eine Funktion namens selena_network_signup_main . Ganz am Ende werden wir zwei zusätzliche Schließungen entfernen

(Zeile 722 und 723) sowie der Aufruf von get_footer() .

In der neu erstellten selena_network_signup_main() deklarieren wir ganz am Anfang die globale Variable active_signup , die von allen anderen Methoden aus dieser Datei verwendet wird. Und fügen Sie einen Aufruf zum Ereignis before_signup_form hinzu, das wir ganz am Anfang der Datei entfernt haben.

Funktion selena_network_signup_main() ( global $active_signup; do_action("before_signup_form"); // ... )

Jetzt muss nur noch das Layout an allen Stellen geändert werden, wo es notwendig ist, und die Registrierungsseite ist fertig.

Ausgabe des Registrierungsformulars

Hier gibt es mindestens zwei Möglichkeiten. Eine bequemere Möglichkeit besteht darin, einen Shortcode zu erstellen und ihn über einen normalen Editor auf der Seite zu platzieren.

// Shortcode erstellen network_signup add_shortcode("network_signup", "selena_network_signup_main");

Die zweite Möglichkeit besteht darin, eine Seitenvorlage page-signup.php in Ihrem untergeordneten Themenordner zu erstellen. Anstelle des Wortes „Anmeldung“ können Sie eine der Seite zugewiesene eindeutige ID verwenden. Fügen Sie innerhalb der Vorlage das erforderliche Layout hinzu und rufen Sie an der richtigen Stelle selena_network_signup_main() auf.

Dadurch sieht meine Registrierungsseite viel besser und sauberer aus.

Aktivierungsseite

Standardmäßig teilt WordPress den Registrierungsprozess in Multisite bedingt in zwei Schritte – das Ausfüllen eines Formulars auf der Website und die Aktivierung eines Kontos, wenn Sie auf einen in einer E-Mail gesendeten Link klicken. Nachdem Sie das im vorherigen Abschnitt erstellte Formular ausgefüllt haben, sendet WordPress eine E-Mail mit einigen Anweisungen und einem Link zur Aktivierung Ihres Kontos.

Die Datei wp-activate.php, die sich im WordPress-Root-Verzeichnis befindet, ist für die Anzeige der Aktivierungsseite verantwortlich. wp-activate.php kann auch komplett geändert werden. Der Vorgang ähnelt dem, den wir bereits für wp-signup.php durchgeführt haben.

Lassen Sie uns die Seite example.org/activate/ über die übliche Schnittstelle erstellen. Verwenden Sie für die Adresse eine beliebige URL, die Ihnen geeignet erscheint.

Kopieren Sie die Datei wp-activate.php in unsere MU-Plugins und fügen Sie sie in mu-plugins/selena-network/signup/plugin.php ein.

Erfordert WPMU_PLUGIN_DIR . "/selena-network/signup/wp-activate.php";

Im Gegensatz zu wp-signup.php enthält es nicht viel Inhalt. Die Datei führt einen einzigen Vorgang aus – sie aktiviert das Konto, wenn der richtige Schlüssel empfangen wird, und zeigt eine Fehler- oder Erfolgsmeldung an.

Lassen Sie uns alle unnötigen Überprüfungen entfernen und die Zeilen 1 bis 69 in WordPress 4.1.1. Ganz zum Schluss entfernen wir den get_footer()-Aufruf. Der restliche Inhalt wird an die Funktion selena_network_activate_main() übergeben.

Interessanterweise wurde hier vor dem Laden von WordPress (wp-load.php) die Konstante WP_INSTALLING deklariert. Seine Anwesenheit führt dazu, dass WordPress keine Plugins lädt.

Wie bei der Registrierungsseite bleibt nur noch, das Layout gegebenenfalls zu korrigieren. Sie können auch den Text der angezeigten Nachrichten ändern (vergessen Sie in diesem Fall nicht, die Textdomäne Ihrer MU-Plugins zu allen Übersetzerfunktionen hinzuzufügen, sie ist standardmäßig nirgendwo festgelegt).

Die vorgefertigte Funktion kann auf einer vorgefertigten Seite über einen Shortcode oder ein separates Template in einem Child-Theme verwendet werden.

Aktivierungs-E-Mails mit korrekten Links

Die Aktivierungsseite ist startbereit, aber WordPress weiß nichts davon und sendet weiterhin Aktivierungs-E-Mails mit einem Link zu wp-activate.php . Im Gegensatz zu wp-signup.php gibt es keinen Filter, mit dem Sie die Adresse ändern können. Stattdessen müssen Sie Ihre eigene Funktion schreiben, die E-Mails mit den richtigen Links versendet.

Beim Ausfüllen und Absenden des Formulars auf der Registrierungsseite ruft WordPress wpmu_signup_ auf. Benutzer() oder wpmu_signup_ bloggen() abhängig von der Art der Registrierung. Beide Funktionen erstellen einen neuen Eintrag in der Tabelle wp_signups und füllen ihn mit den erforderlichen Inhalten, einschließlich des Kontoaktivierungsschlüssels.

Danach wird je nach Funktion wpmu_signup_ aufgerufen Benutzer _notification() oder wpmu_signup_ bloggen _Benachrichtigung() . Beide Funktionen haben eine ähnliche Funktionalität – sie generieren und senden eine E-Mail mit einem Aktivierungslink, aber sie nehmen unterschiedliche Argumente. Beide haben Filter, um das Ereignis "einzufangen".

Wenn (! apply_filters("wpmu_signup_user_notification", $user, $user_email, $key, $meta)) false zurückgeben;

So aktivieren Sie Konten bei der Erstellung eines Blogs:

If (! apply_filters("wpmu_signup_blog_notification", $domain, $path, $title, $user, $user_email, $key, $meta)) (return false; )

Es bleibt nur, eigene Handler zu schreiben, in denen Briefe per wp_mail() gesendet werden, und ganz am Ende unbedingt false anzugeben, damit WordPress keinen Aktivierungsbrief zweimal sendet - einer gehört Ihnen, der andere ist ein Standardbrief mit ein Link zu wp-activate.php .

Funktion selena_network_wpmu_signup_user_notification($user, $user_email, $key, $meta = array()) ( // E-Mail-Header, -Body und -Header generieren // ... // E-Mail senden oder Cron-Aufgabe hinzufügen, um E-Mail zu senden wp_mail($user_email , wp_specialchars_decode($subject), $message, $message_headers); // Falsch übergeben, damit WordPress die Aktivierungs-E-Mail nicht zweimal sendet, false zurückgeben; ) add_filter("wpmu_signup_user_notification", "selena_network_wpmu_signup_user_notification", 10, 4);

Wenn Sie E-Mails über einen SMTP-Server versenden oder die Anzahl der Registrierungen sehr hoch ist, sollten Sie E-Mails nicht sofort versenden. Stattdessen können Sie Cron-Jobs mit WordPress Cron hinzufügen.

Sperren des Zugriffs auf wp-signup.php und wp-activate.php

Nachdem Sie Ihre eigenen Registrierungs- und Aktivierungsseiten erstellt haben, müssen Sie möglicherweise die "Originale" schließen. Zum Beispiel, wenn es auf der Registrierungsseite zusätzliche Felder gibt, die ausgefüllt werden müssen. Außerdem sind viele WordPress-Sites Spam-Registrierungen ausgesetzt.

Um zwei Probleme in einer Aktion zu lösen, können Sie Apache bitten, 404 zurückzugeben, falls versucht wird, diese Seiten zu öffnen. Dazu müssen Sie lediglich ein paar zusätzliche RewriteRule in Ihrer Konfigurationsdatei oder .htaccess registrieren.

RewriteEngine On RewriteBase / # Reguläre Ausdrücke zu kennen ist nie überflüssig :) RewriteRule ^wp-signup\.php - RewriteRule ^wp-activate\.php - # BEGIN WordPress # Standard-WordPress-Regeln belassen :) # ... # END WordPress

Fazit

Für dieses und viele andere „Probleme“ rund um WordPress gibt es viele Lösungen im Internet. Um beispielsweise Registrierungs- und Aktivierungsseiten zu erstellen, schlagen einige vor, die ursprüngliche wp-signup.php und wp-activate.php neu zu schreiben. Dies sollten Sie nicht tun, denn wenn Sie WordPress aktualisieren, verlieren Sie alle Änderungen, die an den Dateien vorgenommen wurden, und Sie können auch die Integrität des Kerns nicht mit überprüfen.

Wenn Sie ein Add-on, ein Thema oder eine Lösung entwickeln, verbringen Sie ein wenig Zeit damit, sich mit den Vorgängen in WordPress vertraut zu machen. Dafür gibt es viele nützliche Debug-Tools.

P.S.

Du kannst das Plugin Multisite User Management verwenden, um neuen Benutzern automatisch verschiedene Rollen zuzuweisen.

Wenn Sie nach dem Lesen des Artikels Fragen oder Schwierigkeiten bei der Erstellung von Registrierungs- und Aktivierungsseiten haben, hinterlassen Sie einen Kommentar und wir werden auf jeden Fall antworten.

27.03.2015 27.03.2015

WordPress-Entwickler. Er mag Ordnung in allem und versteht neue Werkzeuge. Inspiriert von der Symfony-Komponentenarchitektur.

  • Lesen Sie auch: