So erstellen Sie Ihre eigene Registrierungsseite in WordPress Multisite. Bonus. Schutz vor Spammern

APOTHEOSIS APOTHEOSIS (von griechisch Apotheose – Vergöttlichung), 1) im hellenistischen Griechenland und im antiken Rom die Vergöttlichung eines Staatsmannes, Helden, Kaisers, sein Erwerb der göttlichen Essenz. In der Renaissance wurde der Name des Phänomens auf seine Darstellung in Malerei und Theater übertragen. Im modernen Verständnis ist Apotheose die Schlussszene einer musikalischen oder dramatischen Aufführung, in der der Held verherrlicht wird, ein spektakuläres „lebendiges Bild“, das die Hauptidee des Spektakels plastisch zum Ausdruck bringt. Die Form der Apotheose (sowie die lobende Darbietung, die eine Art Apotheose darstellte, die sich im Laufe der Zeit entfaltete) wurde in westeuropäischen Theatern und im russischen Hoftheater des 16.-18. Jahrhunderts entwickelt; entwickelte sich auch auf dem Theater revolutionärer Epochen – in Frankreich am Ende des 18. Jahrhunderts, in Russland nach der Oktoberrevolution. 2) Im weitesten Sinne – Verherrlichung, Erhöhung einer Person, eines Ereignisses, eines Phänomens.

Moderne Enzyklopädie. 2000 .

Synonyme:

Sehen Sie, was „APOTHEOSIS“ in anderen Wörterbüchern ist:

    - (Griechisch von apotheum zu vergöttlichen). 1) Einstufung von Helden und römischen Kaisern in die Schar der Götter. 2) ein Gemälde, das eine berühmte Person in Form eines heidnischen Gottes darstellt. 3) ein feierliches Bild, das ein Theater oder Theaterstück beendet. Wörterbuch der Fremdwörter,... ... Wörterbuch der Fremdwörter der russischen Sprache

    Cm … Synonymwörterbuch

    Apotheose- ein m. Apotheose f. 1. Ehrfurcht vor dem Heer der Götter. Sl. 18. Gemäß der Apotheose des Herkules. Pelsk. Kum 2 196. Die größte Schönheit des Saals ist der Lampenschirm, der vom Maler Lemoine mit Ölfarben auf Leinwand gemalt wurde und die Vergötterung des Herkules darstellt... ... Historisches Wörterbuch der Gallizismen der russischen Sprache

    Apotheose- (von der griechischen Apotheose-Vergöttlichung), 1) im hellenistischen Griechenland und im antiken Rom die Vergöttlichung eines Staatsmannes, Helden, Kaisers, sein Erwerb der göttlichen Essenz. In der Renaissance wurde der Name des Phänomens auf sein Bild übertragen... Illustriertes enzyklopädisches Wörterbuch

    - (von der griechischen Apotheose – Vergöttlichung) zunächst bei den alten Ägyptern, dann bei den Griechen und Römern ein feierlicher Ritus der Vergöttlichung von Herrschern für ihre besonderen Verdienste. Die Apotheose, die sich im Laufe der Zeit zum Herrscherkult gewandelt hat, geht auf... ... zurück. Philosophische Enzyklopädie

    - (von der griechischen Apotheose-Vergöttlichung) ..1) Vergöttlichung antiker griechischer Staatsmänner, später römischer Kaiser2)] Verherrlichung, Erhöhung einer Person, eines Ereignisses, eines Phänomens3) Die letzte feierliche Massenszene... ... Großes enzyklopädisches Wörterbuch

    APOTHEOSE, Apotheose, Ehemann. (Griechische Apotheose-Vergöttlichung). 1. Die Alten hatten ein Ritual, bei dem einem Helden, einem Kaiser (historisch), göttliche Ehren erwiesen wurden. 2. Besonders feierliche öffentliche Lobpreisung einer Person, die den Charakter einer Krönung seiner Tätigkeit hat (Buch) ... Uschakows erklärendes Wörterbuch

    APOTHEOSE, ah, Ehemann. 1. Verherrlichung, Erhöhung von jemandem oder etwas. (Buch). 2. Die zeremonielle Abschlussszene bestimmter Theateraufführungen (speziell). | adj. apotheotisch, oh, oh. Ozhegovs erklärendes Wörterbuch. S.I. Ozhegov, N. Yu. Shvedova. 1949… … Ozhegovs erklärendes Wörterbuch

    - (von der griechischen Apotheose-Vergöttlichung) in der Antike die Zeremonie der Vergöttlichung antiker griechischer Staatsmänner, später römischer Kaiser. Im Theater ist Apotheose die abschließende feierliche Massenszene einer Aufführung oder... ... Politikwissenschaft. Wörterbuch.

    Jean Auguste Dominique Ingres. „Die Apotheose Napoleons“, 1853 Apotheose, veraltet. Apotheose ... Wikipedia

Bücher

  • Apotheose der Grundlosigkeit
  • Apotheose der Grundlosigkeit, Shestov Lev. „Die Apotheose der Grundlosigkeit“ ist wahrscheinlich das berühmteste und zumindest skandalöseste Buch von Lew Schestow. Darin führt er einen Frontalangriff auf das universelle Wissen und...
--- Lager auswählen --- Buffalo Grove IL 60089 USA (Buffalo Grove IL 60089 USA (USA)) Chicago USA USA Tamara(16677 SW Blanton street ALOHA. Oregon 97078) Highland Park(USA, USA Highland Park, IL 60035 P.O. Box 723 Nr. 24) Istanbul(Istanbul,Gençturk Cad.15, Bırlik Han. k-5.d.55 Nr.1) Istanbul(Nişantaşı-Valikonağı cd-Şehit İsmet Armağan sk- Nr. 3 / 17) Paris(13R Villa Madrid 92200 Neuilly-sur-Seine) Republik Moldau, Falesti (nahe Fagadau) South Kensington (Bute Street) Adler (Quiet Lane 2, Kudepsta Bezirk) Aktobe (Aktyubinskaya Str. 47/2) Almetyevsk (Almetyevsk, Lenin Str. 13, Büro 306) Anapa (Terskaja-Straße 88, 3. Stock) Astrachan (Kommunisticheskaja-Straße 17, Büro 4) Atyrau (Atyrau, Azattyk-Allee 42, Büro 206) Berdjansk (Gebiet Saporoschje) Bischkek (Bischkek, Chui-Allee 32B, Einkaufszentrum „Izumrud“-Büro C-5) Blagoweschtschensk (Str. 50 Let Oktyabrya 15. „Amur Fair“-Büro 575) Buguruslan (Krasnoznamenaya-Str. 47/2) Weliki Ustjug (Stadt Weliki Ustjug, Krasnaja-Str., 61 (2. Stock)) Stadtzentrum) Wladiwostok (Svetlanskaya Str. 147, Büro 2/4) Wolgograd (Stadt Wolgograd, Aviator Highway 15, Lager 23) Dyurtyuli (Agidel Str., 4, Apt. 2) Yeisk (Str. .Karla-Marx 42/1 ) Jekaterinburg (St. Pervomaiskaya 56, Büro 308) Jekaterinburg (Mamina-Sibiryaka Str. 10, Büro 3) Ivanovo (Sheremetyevsky Prospekt, 85G, Premium Plaza Business Center, 2. Stock, Büro 212) Izhevsk (Lenina 21, Büro 304. Business Center „Forum“) Izberbash (Chapaeva 4 ind. 368501) Irkutsk (Irkutsk, Gornaya Str. 4 (neben dem Einkaufszentrum Karamel), Büro 407) Ishimbay (Sorge, Gebäude 18) Yoshkar-Ola (Lenina Ave. 24v, Büro 318) Kasan (Odnostoronka Grivki Gasse, Gebäude 10, U-Bahn-Station „Kozya Sloboda“ sowie Dekabristov-Straße, 85 „B“ Geschäftszentrum „Relita“, Büro 411) Kamensk-Uralsky (56 Pobedy Ave.) Kemerowo (Demyan-Bednogo-Straße, Büro 1 401) Kiew ( Olevskaya Str. 9, Apt. 4 (Anreise nach vorheriger Anmeldung) Komsomolsk-on-Amur (Shikhanova Str. 10, Eingang Büro 1 von Komsomolskaya am Ende des Gebäudes.) Kostroma (Mira Avenue 51, Büro 15) Krasnodar ( St. .Krasnaya 124 Büro 302) Krasnojarsk (Krasnoyarsky Rabochiy Ave., 120 Krasnoyarye Einkaufszentrum) Lemberg (Kathedralenplatz 12A) Machatschkala (Akushskinogo 9v) Miass (30 let VLKSM Str. 85) Minsk (Korzhenevskogo, 26) Moskau (U-Bahn: VDNKh, Jaroslawskaja-Str., 10, Gebäude 4, Büro 106) Moskau (Simferopol-Boulevard) Moskau (Glazovsky-Gasse, 5, Eingang im Bogen, Tür an der linken U-Bahn-Station: Smolenskaya-500 m, Kropotkinskaya-1 km, Park Kultury - 1 km.) Moskau (m. Tschechowskaja, Puschkinskaja, Twerskaja. Strastnoy Boulevard, 6 Gebäude 1, Business Center, Büro 421) Moskau (Lobnya, Mayakovskogo Str., 4A, TR1, 3. Stock, Büro 301) Moskau (U-Bahn-Station Molodezhnaya, Yartsevskaya Straße, Gebäude 27, Gebäude 9 Verbesserungszentrum „Vier Elemente“. ") Moskau (Krasnaja Presnja 38-45) Moskau (Stadt. Moskauer U-Bahn-Station Taganskaya, Radialausgang 3, 30 Meter von der U-Bahn entfernt. St. Bolshie Kamenschiki 1, 4. Stock, Büro 30) Moskau (U-Bahn Leninsky Prospect, Vavilova 9A Gebäude 6, Büro 10 B, 3. Stock) Moskau (U-Bahn Novoslobodskaya, Mendeleevskaya, Mayakovskaya, Belorusskaya (radial). 4. Twerskaja-Straße - Yamskaya, Nr. 24. Eingang durch den Bogen, PET STORE) Moskau (U-Bahn-Station Belorusskaya (Ring), 5 Meter vom U-Bahn-Ausgang entfernt. Tverskaya Zastava-Platz, Nr. 3, 3. Stock, Büro 321. In der Nähe des Weißrussischen Bahnhofs. ) Moskau (M . ALTUFEVO Str. Pskovskaya Nr. 6) Moskau (Moskau, Str. Radiogebäude 5, Gebäude 4, 2. Stock, 201 Büro (separates 3-stöckiges Gebäude)) Naberezhnye Chelny (Str. Puschkina 4 (45/05), Eingang 2 , Büro 2) Naberezhnye Chelny (Sh. Usmanova St., 122, Büro 111, 1. Stock) Nalchik (Nalchik, Kirova St. 292a, 2. Stock, Büro 6) Nakhodka (Pogranichnaya St., 6, Büro 304) Nevinnomyssk (Pl . 50 Let Oktyabrya 8A) Nefteyugansk (12 Mikrobezirk Gebäude 7) Nischnewartowsk (Nischnewartowsk, Mira Str. 31B.) Nischni Nowgorod (Kominterna Str. 139, Büro 603 (OREOL Business Center)) Nischni Nowgorod (U-Bahn Gorkovskaya, Kostina Str. 3, BC „Neuer Platz“, 2. Stock, Büro 239) Nischni Tagil (Krasnoarmeiskaya Str. 42a, 3. Stock, Büro 4) Nischni Tagil (Nischni Tagil, Str. 42a, 3. Stock, Büro 4) Papanina 5, Büro 1, Kushva, Gornyakova Str. 2/11) Nikolaev (Ryumina Str. 5/1) Novorossiysk (Gebiet Krasnodar, Dorf Noworossijsk, Tsemdolina Str. Zolotaya Rybka, Nr. 15) Novorossiysk (Murat Akhedzhak Str., Nr . 4) Nowosibirsk (Str., Oktyabrskaya 42, Büro 601, Geschäftszentrum in der Nähe des Lenin-Platzes, Mayakovsky-Kino) Nowosibirsk (Gogol-Straße 33/1. 20 Meter von der U-Bahn-Station Marshala Pokryshkina entfernt, Einkaufszentrum „On Gogol“) Novotroitsk ( Sovetskaya Str. .144 Apt. 26) New Urengoy (Mikrobezirk Druschba, Gebäude 4/3, Apt. 183) Norilsk (Leninsky Prospekt, 47a, Büro 79) Nur-Sultan (Astana) (Beibitshilik 14, BC Marden, Büro 708) Odessa (geb. französisches 60 multidisziplinäres Rehabilitationssanatorium „SARTUS“) Oktyabrsky (Mikrodistrikt 32a, Gebäude 6, Apt. 88) Omsk (Ul. 5 Severnaya, 209A, Apt. 37) Orel (Str. General Rodina, Nr. 56, Wohnung 60) Orenburg (Bogdan Khmelnitsky 4, erster Stock, rechte Veranda) Orsk (Lenina Ave. 93) Pawlodar (Satpayev St. 71, Büro 107) Perm (Sowetskaja 52, Büro 1) Perm (Druschby Str. 34) , Büro 305) Pyt-Yakh (Mikrodistrikt 5, Gebäude 5) Pjatigorsk (Str. 295 Rifle Division, Gebäude 13, Gebäude 2) Rostow am Don (Soborny Lane 21, Büro 10 B) Salavat (Lenin Str., Gebäude 3 , Büro 209, 2. Stock) Samara (St. Novo-Sadovaya 106, Büro 804, linker Aufzug, 8. Stock) St. Petersburg (U-Bahn: Vasileostrovskaya, 13. Linie der Wassiljewski-Insel Nr. 78, Büro 182) St. Petersburg (Dostoevskaya U-Bahnstation (5 Meter) und U-Bahnstation Vladimirskaya (300 Meter) VLADIMIRSKY PASSAGE 3. Stock, zentraler Eingang ERSTE GALERIE, Allee. Vladimirsky 19) St. Petersburg (U-Bahn-Station Admiralteyskaya (10 Meter) U-Bahn-Station Nevsky Prospekt (7 Minuten zu Fuß). Einkaufszentrum „ADMIRAL“. Straße Malaya Morskaya, 4/1) St. Petersburg (U-Bahn-Station Sennaya, U-Bahn-Station Sadovaya, m Spasskaya 1 Min. zu Fuß. Efimova Str. 1, Etage 2, Büro 4, Geschäftszentrum „Sennaya 4“, Eingang links vom Café „Nord“) Saratow (Bolshaya Gornaya Str., 359B, Büro Nr. 3) Sewastopol (Ochakovtsev Str. 19, Zentrum „Plaza“, Erdgeschoss, Büro 29/2) Snezhinsk (Zababakhina Str. 19 a) Sotschi (Sotschi, Donskaya Gebäude 15.) Sotschi (Sovetskaya Str. 42, Büro 204) Stawropol (Lomonosova Str. 21, Büro 18) Sterlitamak (85 Khudaiberdina Str., 3. Stock) Surgut (30 Let Pobedy Str., 64) Tobolsk (Tobolsk, 6. Mikrobezirk, Gebäude 11, Büro 39 (Eingang vom Komsomolsky Prospekt)) Tolyatti (40 Jahre alt) Pobeda, 50, Büro 212a, TD Raduga 1. Stock) Tomsk (Tomsk, Sovetskaya-Straße 84) Tuymazy (Michurina-Straße, 15, Büro 2) Tyumen (Gertsen-Straße 72, Büro 214) Uljanowsk (Ryabikova-Straße, Nr. 214) 73) Ust-Kamenogorsk (Gorki-Straße 57, Büro 213) Ufa (Verkhnetorgova-Platz 6 (NESTEROV-Geschäftszentrum)) Chabarowsk (Postysheva-Straße 16, Büro 108) Chanty-Mansijsk (G. Chanty-Mansijsk, st. Karl Marx 15, 2. Stock.) Tscheljabinsk (Pobedy Ave. 168, 3. Stock, Büro 36.) Tscherkessk (Lenin Str. 101) Tschita (Babuschkina Str. 104, Büro 425) Tschischmy (Koltsevaya 17) Tschischmy (FRIENDSHIP Ave., 1B) Schweiz (Arosio via Terra Sotto, 1 6939) Schymkent (Kolchosnaja-Straße 47), Juschno-Sachalinsk (Angarski-Straße 21), Jakutsk (8/3b Dzerzhinsky-Straße), Jakutsk (Jakutsk), Jalta (Lenin-Ufer 5a, Einkaufszentrum „Fontan“) , 4. Stock) Janaul (Sowetskaja-Straße 23, Büro Nr. 8 Berezka-Gebäude) Jaroslawl (Ausstellungsraum 57) Jaroslawl (Chkalova-Straße 2) Birsk Baschkortostan () ?>

Wir erstellen eigene Seite Registrierung für Multisite anstelle der standardmäßigen wp-signup.php .

Im Normalfall WordPress-Installation Die Registrierungsseite (Autorisierung, Passwort-Reset) wird durch die Datei wp-login.php angezeigt.

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

Für eine Multisite gelten in wp-login.php gesonderte Bedingungen. Wenn Sie also auf einer Multisite dem Link /wp-login.php?action=register folgen, leitet WordPress zur Seite /wp-signup.php weiter. Viele Themes lassen die Seite nicht sehr attraktiv aussehen, also erstellen wir unsere eigenen.

Hauptseite des Netzwerks

Standardmäßig öffnet WordPress die Registrierungsseite (wp-signup.php) auf der Hauptdomäne (Site) des Netzwerks. Sie können jedoch für jede Netzwerksite eine separate Registrierungsseite erstellen, auch wenn dies der Fall ist andere Themen. Wir betrachten den Fall, dass alle Websites im Netzwerk über eine eigene Registrierungsseite verfügen, aber das gleiche Thema verwendet wird und sich die Websites nur in der Sprache unterscheiden. Wenn Sie unterschiedliche Themes verwenden, müssen Sie mehr Code schreiben.

Funktionen.php?

Nein. Dieser Dateiname scheint in jedem Artikel über WordPress erwähnt zu werden. In unserem Fall ist es angesichts der Tatsache, dass die Registrierungsfunktion für mehrere Websites konzipiert ist, sinnvoll, sie in MU-Plugins einzubinden, die beim Öffnen einer Website geladen werden.

Lyrischer Exkurs

Es ist erwähnenswert, dass MU-Plugins vor regulären Plugins und bevor der WordPress-Kern vollständig geladen ist, geladen werden, sodass der Aufruf einiger Funktionen zu schwerwiegenden Fehlern in PHP führen kann. Eine solche „frühe“ Beladung hat auch ihre Vorteile. Nehmen wir an, dass Sie innerhalb eines Themes keine Aktionen anhängen können, die bereits ausgelöst werden, bevor die Datei „functions.php“ aus dem Theme geladen wird. Ein Beispiel hierfür sind die Aktionen aus dem Jetpack-Plugin der Form jetpack_module_loaded_lated-posts (related-posts ist der Name des Moduls), mit deren Hilfe es möglich ist, die Aktivität von Modulen in Jetpack zu überwachen. Es ist nicht möglich, diese Aktion aus der Theme-Datei zu „anhängen“, da die Aktion bereits ausgelöst wurde, bevor das Theme geladen wurde – Plugins werden vor Themes geladen. Sie können sich das allgemeine Bild der WordPress-Ladereihenfolge auf der Seite „Aktionsreferenz“ im Codex ansehen.

Dateireihenfolge

MU-Plugins können beliebig viele Dateien und jede Struktur enthalten, die Ihnen logisch erscheint. Ich halte mich an etwa diese Hierarchie:

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

Die Datei „load.php“ enthält alle notwendigen „Plugins“ für unser Netzwerk:

// Übersetzungen für alle Addons laden load_muplugin_textdomain ("selena_network", "/selena-network/linguals/"); // Netzwerkanmeldung erfordert WPMU_PLUGIN_DIR. "/selena-network/signup/plugin.php"; // Weitere Plugins // erfordern WPMU_PLUGIN_DIR ...

Im Ordner „selena-network“ werden Plugin-Ordner gespeichert, jeder mit seiner eigenen „plugin.php“, die wir in „load.php“ einbinden. Dies gibt Ihnen Flexibilität und die Möglichkeit, Dinge schnell ein- und auszuschalten.

Adresse der Registrierungsseite

Um die Adresse der Registrierungsseite anzugeben, verwenden Sie den Filter wp_signup_location. Es befindet sich in der Datei wp-login.php und ist für die Weiterleitung zu wp-signup.php verantwortlich.

Fall „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 zurückgibt:

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

selena_network ist das 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. Die Priorität beim Hinzufügen eines Filters ist 99, da einige Plugins, zum Beispiel bbPress und BuddyPress, diese Adresse mit ihrer eigenen überschreiben können (MU-Plugins werden früher geladen als normale Plugins, siehe oben). Beachten Sie, dass home_url() anstelle von network_site_url() verwendet wird, um den Besucher auf derselben Domäne zu halten. Als Adresse kann jede beliebige URL verwendet werden.

Eine Seite erstellen

Jetzt erstellen wir über die normale Schnittstelle und im Ordner eine Seite mit der Adresse site.com/signup/ Kinderthema Die Vorlage für unsere neue Seite ist page-signup.php. Anstelle des Wortes „Anmelden“ können Sie eine eindeutige ID verwenden.

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

Es ist erwähnenswert, dass der gesamte Vorlagenprozess 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

Jetzt erstellen wir eine Funktion, 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 innerhalb von mu-plugins/selena-network zu verbinden /signup/plugin.php). Weitere Manipulationen mit Dateien sind äußerst schwierig und langwierig zu beschreiben, sodass Sie sie selbst durchführen müssen. Ich beschreibe einfach, was genau zu tun ist und veröffentliche es Quelldaten Ihres Projektes:

  1. Entfernen Sie am Anfang der Datei alle require , Funktionsaufrufe und anderen Code außerhalb der 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.

In wp-activate.php müssen Sie ungefähr dasselbe tun:

  1. Entfernen Sie den gesamten Code außerhalb der Funktionen und packen Sie das Layout in eine separate Funktion ein.
  2. Ändern Sie das Layout an den erforderlichen Stellen.

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.

Versenden von Aktivierungsbriefen

Auf der Registrierungsseite wird dem Besucher eine E-Mail mit einem Link zur Aktivierung seines Kontos gesendet. Standardmäßig erfolgt dies durch die Funktion wpmu_signup_user_notification() aus der Datei ms-functions.php. Sie können die Funktionalität für Ihre eigene Funktion ausleihen. Der Grund, die Verwendung dieser Funktion zu vermeiden, besteht darin, dass der Link zur Kontoaktivierung von wp-activate.php gesendet wird. Sie können diese Funktion mit dem Filter „wpmu_signup_user_notification“ „ausschalten“ und den Wert „false“ zurückgeben (wenn dies nicht geschieht, wird der Aktivierungsbrief zweimal gesendet, okay, eigentlich zwei verschiedene Briefe).

Funktion armyofselenagomez_wpmu_signup_user_notification($user, $user_email, $key, $meta = array()) ( // ... // Code aus der Funktion wpmu_signup_user_notification() wp_mail($user_email, wp_specialchars_decode($subject), $message, $message_headers) ; return false; ) add_filter("wpmu_signup_user_notification", "armyofselenagomez_wpmu_signup_user_notification", 10, 4);

Dadurch sah die Registrierungsseite im Selena-Theme viel sauberer und ordentlicher aus.

Abschluss

Es gibt viele andere, nicht ganz korrekte Möglichkeiten im Internet, dasselbe zu tun – Apache-Weiterleitungen, AJAX-Formulare, die ohne Java Script nicht funktionieren usw. Das alles hat mir nicht wirklich gefallen, also habe ich versucht, es so richtig zu machen wie möglich auf meiner eigenen Website.

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

Vergessen Sie nicht, reinzuschauen Quelle Alle oben beschriebenen Funktionen, um vollständig zu verstehen, was und wie im Code passiert.

Bonus. Schutz vor Spammern

Selbst die kleinsten WordPress-Sites werden häufig von Spam-Registrierungen geplagt. Sie können endlose Bedingungen schreiben, um Bots zu filtern, oft eher wie der Versuch, Bots zu erstellen künstliche Intelligenz🙂 Im Falle einer Multisite hat mir eine regelmäßige Weiterleitung in Apache sehr geholfen, mit deren Hilfe ich beim Öffnen von /wp-signup.php und /wp-acitvate.php nach einem 404 gefragt habe (ich bin kein Experte An Apache einrichten, daher sind meine Regeln möglicherweise nicht sehr korrekt).

RewriteEngine auf RewriteBase / RewriteRule ^wp-signup\.php - RewriteRule ^wp-activate\.php - # BEGIN WordPress # Wir berühren die Regeln von WordPress standardmäßig nicht :) # ... # ENDE WordPress

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

Ermöglicht Ihnen die gleichzeitige Verwendung einer WordPress-Installation für mehrere Websites. In diesem Fall erhält jede Site ihre eigenen Tabellen in der Datenbank mit einem eindeutigen Präfix.

Tabellen mit Daten registrierter Benutzer sind allen Websites im Netzwerk gemeinsam. Dies ist definitiv ein Pluspunkt und wenn Sie sich einmalig registrieren, erhalten Sie Zugriff auf mehrere Websites. Darüber hinaus kann das gleiche 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 Installation WordPress-Seite Registrierung, Autorisierung und Passwort-Reset geben die Datei wp-login.php aus.

  • 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 dem Link wp-login.php?action=register folgen, erfolgt eine Weiterleitung zu wp-signup.php. Dies ist Ihre Netzwerkregistrierungsseite, die standardmäßig in WordPress enthalten ist.

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

Bei den meisten Themes sieht die Registrierungsseite nicht besonders gut aus. Viele Themes verwenden CSS-Frameworks wie Bootstrap und ihre eigenen benutzerdefinierten Klassen, um verschiedene Elemente auf Seiten zu formatieren. Daher ist es schwierig, einen HTML-Code zu schreiben, der für alle passt.

Aber verzweifeln Sie nicht, wenn die Seite unordentlich aussieht. Die Datei wp-signup.php ist zunächst eine tolle Sache, 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 ein gutes Beispiel, das Ihnen hilft, die Bandbreite der Funktionen zu verstehen, die WordPress für die Verarbeitung und Validierung von Benutzereingaben und die Erstellung neuer Konten bietet.

Hauptseite des Netzwerks

Standardmäßig öffnet WordPress die Registrierungsseite (wp-signup.php) auf der Hauptdomäne (Site) des Netzwerks. Sie können jedoch Registrierungsseiten für jede Site in Ihrem Netzwerk erstellen, auch wenn diese über Themen verfügt.

Wir betrachten den Fall, dass alle Websites im Netzwerk dasselbe Thema verwenden, jede von ihnen jedoch über eine Registrierungsseite verfügt. Die Seiten unterscheiden sich in der Sprache (Englisch und Russisch), daher wird die Registrierungsseite in der „Muttersprache“ der Seite angezeigt. Wenn Websites unterschiedliche Themen verwenden, hängt alles davon ab, um welche Themen es sich handelt, ob das gleiche Layout für sie geeignet ist (eine hervorragende Situation, die Sie dazu bringen kann, alle Ihre Themen zu vereinheitlichen) oder ob es sich lohnt, die Seiten einzeln zu entwickeln.

Alternative zu Functions.php

Dateireihenfolge

MU-Plugins können eine beliebige Anzahl von Dateien und eine Struktur enthalten, die Ihnen logisch erscheint. Ich halte mich an etwa diese Hierarchie:

| mu-plugins | | laden.php | | Selena-Netzwerk | | | Anmelden | | | | Plugin.php | | | ... | | | Jetpack | | | | Plugin.php

Die Datei „load.php“ enthält Übersetzungen und alle notwendigen „Plugins“:

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

Plugin-Ordner werden im Verzeichnis selena-network gespeichert. Jedes hat seine eigene Plugin.php, die wir in Load.php einbinden. Dies gibt Ihnen die Flexibilität und die Möglichkeit, im Notfall einzelne Komponenten eines Arbeitsprojekts sofort aus- und wieder einzuschalten.

Registrierungsseite

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

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

Weiterleitung zur gewünschten Registrierungsseite

Um WordPress über unsere zu informieren neue Seite Registrierung und genau dorthin weitergeleitet, wenn Sie auf den Link „Registrieren“ 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.

Fall „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 in der Hauptdomäne des Netzwerks geöffnet. Aus diesem Grund wird hier network_site_url() verwendet.

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

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

selena_network ist das 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. Die Priorität beim Hinzufügen eines Filters ist 99, da einige Plugins, zum Beispiel bbPress und BuddyPress, diese Adresse mit ihrer eigenen überschreiben können (MU-Plugins werden früher geladen als normale Plugins, siehe oben).

Bitte beachten Sie, dass home_url() verwendet wird, das im Gegensatz zu network_site_url() die Adresse der aktuellen Site und nicht der Hauptsite des Netzwerks zurückgibt.

Funktionalität wp-signup.php

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

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

Als nächstes werden viele Methoden deklariert, und bevor wir mit ihnen arbeiten, lohnt es sich zu verstehen, was jede Funktion tut. Viele von ihnen verwenden häufig 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 Schwierigkeiten haben sollten.

  • wpmu_signup_stylesheet() – Gibt zusätzliches CSS auf der Registrierungsseite aus.
  • show_blog_form() – Felder für die Site-Registrierung (Adresse, Name, Sichtbarkeit für Suchmaschinen).
  • validieren_blog_form() – validiert die eingegebene Site-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() – Überprüfung des eingegebenen Logins und der E-Mail-Adresse. E-Mail mit wpmu_validate_user_signup() .
  • signup_another_blog() – Felder zum Registrieren neuer Websites mithilfe von show_blog_form() für Benutzer, die bereits auf der Website registriert sind.
  • validate_another_blog_signup() – überprüft die Site-Adresse und den Titel mit validate_blog_form() .
  • signup_user() ist die Hauptfunktion zur Anzeige der Felder der Registrierungsseite.
  • validate_user_signup() – prüft Login und E-Mail-Adresse. E-Mail mit validate_user_form() .
  • signup_blog() – Felder zur Eingabe der Adresse, des Namens und der Sichtbarkeit der Site (zweiter Registrierungsschritt) mit show_blog_form() .
  • validate_blog_signup() – prüft Login und E-Mail-Adresse. E-Mail, Adresse und Name der Website.

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

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

Im Folgenden wird die Vorgehensweise zum Kopieren von wp-signup.php in MU-Plugins und zum Vornehmen von Änderungen am „Fork“ beschrieben. Dies scheint möglicherweise nicht der beste Weg zu sein. Stattdessen können Sie Ihre eigenen Funktionen von Grund auf schreiben, um Formulare mithilfe von Klassen anstelle regulärer Funktionen zu validieren und anzuzeigen. Meiner Meinung nach verfügt wp-signup.php bereits über die gesamte notwendige Logik für unsere Seite, es müssen nur noch einige kleine Änderungen vorgenommen werden.

Wenn WordPress aktualisiert wird, ändert sich auch wp-signup.php von Zeit zu Zeit, was jedoch nicht bedeutet, dass Sie Ihren „Fork“ mit jeder Veröffentlichung synchronisieren müssen. Die Funktionen in wp-signup.php befassen sich im Wesentlichen nur mit der HTML-Ausgabe, der Datenüberprüfung, der Erstellung von Konten und Websites, und es sind Methoden mit dem Präfix wpmu_ beteiligt, die in ms-functions.php deklariert sind.

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

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

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

Jetzt können wir die Hauptfunktion zum Anzeigen des Registrierungsformulars 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 Verschlüsse entfernen

(Zeilen 722 und 723) sowie der Aufruf get_footer().

Im 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 wir 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 müssen Sie nur noch das Layout an allen nötigen Stellen ändern und schon ist die Registrierungsseite fertig.

Ausgabe des Anmeldeformulars

Hier gibt es mindestens zwei Möglichkeiten. Mehr bequeme Weise– Erstellen Sie einen Shortcode und platzieren Sie ihn über einen normalen Editor auf der Seite.

// Einen 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 Theme-Ordner zu erstellen. Anstelle des Wortes „Anmelden“ können Sie die eindeutige ID verwenden, die der Seite zugewiesen ist. Fügen Sie innerhalb der Vorlage das erforderliche Layout hinzu und rufen Sie selena_network_signup_main() an der richtigen Stelle auf.

Dadurch sah meine Registrierungsseite viel besser und übersichtlicher aus.

Aktivierungsseite

Standardmäßig unterteilt WordPress den Registrierungsprozess in Multisite bedingt in zwei Schritte: Ausfüllen eines Formulars auf der Website und Aktivieren Ihres Kontos durch Klicken auf den an gesendeten Link Email. Nachdem Sie das im vorherigen Abschnitt erstellte Formular ausgefüllt haben, sendet WordPress eine E-Mail mit kurzen Anweisungen und einem Link zur Aktivierung Ihres Kontos.

Für die Anzeige der Aktivierungsseite ist die Datei wp-activate.php im WordPress-Stammverzeichnis 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 normale Schnittstelle erstellen. Als Adresse verwenden Sie eine beliebige URL, die Ihnen passend erscheint.

Kopieren wir die Datei wp-activate.php in unsere MU-Plugins und verbinden sie mit mu-plugins/selena-network/signup/plugin.php.

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

Im Gegensatz zu wp-signup.php ist darin nicht viel Inhalt enthalten. Die Datei führt einen einzelnen Vorgang aus: Sie aktiviert das Konto, wenn der richtige Schlüssel empfangen wird, und zeigt eine Fehlermeldung an oder Erfolgreiche Fertigstellung Operationen.

Entfernen wir alle unnötigen Prüfungen und erfordern – von den Zeilen 1 bis 69 in WordPress 4.1.1. Ganz am Ende entfernen wir den Aufruf get_footer(). Den restlichen Inhalt übergeben wir an die Funktion selena_network_activate_main().

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

Wie auch bei der Registrierungsseite müssen nur noch ggf. Korrekturen am Layout vorgenommen werden. 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; standardmäßig ist sie nirgendwo installiert).

Die vorgefertigte Funktion kann auf einer vorab erstellten Seite über einen Shortcode oder eine separate Vorlage in einem Child-Theme verwendet werden.

Aktivierungsschreiben mit korrekten Links

Die Aktivierungsseite ist einsatzbereit, aber WordPress weiß nichts davon und sendet trotzdem Aktivierungs-E-Mails mit einem Link zu wp-activate.php. Im Gegensatz zu wp-signup.php gibt es keinen Filter, der es Ihnen ermöglichen würde, die Adresse zu ändern. Stattdessen müssen Sie Ihre eigene Funktion schreiben, die E-Mails mit den richtigen Links sendet.

Wenn Sie das Formular auf der Registrierungsseite ausfüllen und abschicken, ruft WordPress wpmu_signup_ auf. Benutzer() oder wpmu_signup_ Blog() abhängig von der Registrierungsart. Beide Funktionen erstellen neuer Eintrag in der Tabelle „wp_signups“ und füllen Sie sie mit dem erforderlichen Inhalt, einschließlich des Kontoaktivierungsschlüssels.

Anschließend wird je nach Funktion wpmu_signup_ aufgerufen Benutzer _notification() oder wpmu_signup_ Blog _Benachrichtigung() . Beide Funktionen haben eine ähnliche Funktionalität – sie generieren und versenden eine E-Mail mit einem Aktivierungslink, akzeptieren jedoch unterschiedliche Argumente. Beide verfügen über Filter zum „Abfangen“ des Ereignisses.

If (! apply_filters("wpmu_signup_user_notification", $user, $user_email, $key, $meta)) return false;

So aktivieren Sie Konten mit Blog-Erstellung:

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

Es bleibt nur noch, Ihre eigenen Handler zu schreiben, in denen Briefe über wp_mail() gesendet werden, und stellen Sie ganz am Ende sicher, dass Sie false zurückgeben, damit WordPress nicht zweimal einen Aktivierungsbrief sendet – einer gehört Ihnen, der andere ist die Standardeinstellung Brief mit einem Link zu wp-activate.php .

Funktion selena_network_wpmu_signup_user_notification($user, $user_email, $key, $meta = array()) ( // Kopfzeile, Text und Kopfzeilen des Briefes generieren // ... // Brief senden oder eine Cron-Aufgabe zum Senden hinzufügen Buchstabe wp_mail($user_email , wp_specialchars_decode($subject), $message, $message_headers); // Geben Sie false an, damit WordPress die Aktivierungs-E-Mail nicht zweimal sendet. return false; ) 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 groß ist, sollten Sie darüber nachdenken, E-Mails nicht sofort zu versenden. Stattdessen können Sie Cron-Aufgaben mit WordPress Cron hinzufügen.

Wir schließen den Zugriff auf wp-signup.php und wp-activate.php

Nachdem Sie Ihre eigenen Registrierungs- und Aktivierungsseiten erstellt haben, möchten Sie möglicherweise die „Originale“ schließen. Wenn es beispielsweise auf der Registrierungsseite zusätzliche Felder gibt, die ausgefüllt werden müssen. Außerdem unterliegen viele WordPress-Sites der Spam-Registrierung.

Sie können zwei Probleme in einer Aktion lösen, indem Sie Apache bitten, eine 404 zurückzugeben, wenn Sie versuchen, diese Seiten zu öffnen. Dazu müssen Sie lediglich ein paar zusätzliche RewriteRules zu Ihrer Konfigurationsdatei oder .htaccess hinzufügen.

RewriteEngine auf RewriteBase / # Wissen Reguläre Ausdrücke wird nie überflüssig sein :) RewriteRule ^wp-signup\.php - RewriteRule ^wp-activate\.php - # BEGIN WordPress # Wir berühren standardmäßig nicht die Regeln von WordPress :) # ... # ENDE WordPress

Abschluss

Es gibt viele Lösungen für dieses und viele andere WordPress-„Probleme“ im Internet. Um beispielsweise Registrierungs- und Aktivierungsseiten zu erstellen, schlagen einige vor, die ursprünglichen Dateien wp-signup.php und wp-activate.php neu zu schreiben. Dies sollte nicht getan werden, denn wenn Sie WordPress aktualisieren, gehen alle an den Dateien vorgenommenen Änderungen verloren und Sie können die Integrität des Kerns auch nicht mithilfe von überprüfen.

Wenn Sie ein Add-on, ein Theme oder eine Lösung entwickeln, sollten Sie sich ein wenig Zeit nehmen, um zu verstehen, was in WordPress vor sich geht. Hierfür gibt es viele nützliche Debugging-Tools.

P.S.

Um neuen Benutzern automatisch verschiedene Rollen zuzuweisen, können Sie das Multisite User Management-Plugin verwenden.

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

27.03.2015 27.03.2015

WordPress-Entwickler. Liebt Ordnung in allem und das Verständnis für neue Werkzeuge. Inspiriert von der Symfony-Komponentenarchitektur.

  • Oft stellt sich die Frage, wie man ein Formular auf allen Seiten Ihrer Zend-Anwendung platzieren kann. Nehmen wir an, ich möchte das Abonnementformular in der Datei „layout.phtml“ platzieren, sodass es auf jeder Seite zu finden ist. Der Befehl „layout->content()“ funktioniert mit Aktionen und Controllern... Wie können wir implementieren, was wir brauchen?

    Eine Lösung für dieses Problem besteht darin, einen Aktionshelfer zu erstellen.

    Beginnen wir mit der Einrichtung der ZF-Anwendung:

    $ zf Projektlayoutform erstellen $ cd Layoutform $ zf Layout aktivieren

    Bereinigen Sie die Datei application/views/scripts/index/index.phtml und fügen Sie etwas wie Folgendes ein:

    application/views/scripts/index/index.phtml:

    Dies ist die Homepage

    Jetzt können wir beginnen.

    Bilden

    Lassen Sie uns ein neues Formular erstellen:

    $zf Formularanmeldung erstellen

    Und auch die Felder, die wir brauchen:

    application/forms/Signup.php:

    Die Klasse Application_Form_Signup erweitert Zend_Form ( public $processed = false; public function init() ( $this->addElement("text", "name", array("label" => "Name", "required" => true, " validators" => array(array("StringLength", false, array("max"=>75)),),)); $this->addElement("text", "email", array("label" = > "Email", "required" => true, "validators" => array(array("StringLength", false, array("max"=>150)), "EmailAddress",),)); $this- >addElement("submit", "go", array("label" => "Sign up",)); ) )

    Wir haben das Formular. Es bleibt nur noch, es herauszubringen.

    Aktionsassistent

    Wir verwenden den Aktionshelfer, um das Formular zu initialisieren.

    Fügen Sie diese Zeile zur application.ini hinzu:

    application/configs/application.ini:

    Resources.frontController.actionhelperpaths.Application_Controller_Helper = APPLICATION_PATH "/controllers/helpers"

    Jetzt weiß das System, wo es nach Aktionshelfern suchen muss, sodass wir weitermachen können:

    application/Bootstrap.php:

    Bootstrap("frontController"); $signup = Zend_Controller_Action_HelperBroker::getStaticHelper("Signup"); Zend_Controller_Action_HelperBroker::addHelper($signup); ) )

    Der Aktionshelfer sieht folgendermaßen aus:

    application/controllers/helpers/Signup.php:

    getActionController()->view; $form = new Application_Form_Signup(); $request = $this->getActionController()->getRequest(); if($request->isPost() && $request->getPost("submitsignup")) ( if($form->isValid($request->getPost())) ( $data = $form->getValues() ; // Daten verarbeiten $form->processed = true; ) ) $view->signupForm = $form; ) )

    Hier gibt es nichts Besonderes. Achten Sie einfach auf die übergeordnete Klasse.

    Assistent anzeigen

    Um das Formular anzuzeigen, erstellen wir einen View-Helfer, der so aussieht:

    application/views/helpers/SignupForm.php:

    Melden Sie sich für unseren Newsletter an

    "; if($form->processed) ( $html .= "

    Danke fürs Anmelden

    "; ) else ( $html .= $form->render(); ) return $html; ) )

    Jetzt müssen wir nur noch das Formular in der Datei „layout.phtml“ rendern:

    application/layouts/scripts/layout.phtml:

    headMeta()->prependHttpEquiv("Content-Type", "text/html; charset=UTF-8"); $this->headTitle("Layout-Formulartest"); echo $this->doctype(); ?> headMeta()->setIndent(4); ?>headTitle()->setIndent(4); ?>

    layout()->content; ?>
    signupForm($this->signupForm); ?>


    Passiert

    Das ist alles. Wir haben die von uns beabsichtigte Funktionalität erreicht.