Menú
Está libre
registro
hogar  /  Instalacion y configuracion/ Cómo crear su propia página de registro en WordPress Multisite. Forma en tu diseño

Cómo crear su propia página de registro en WordPress Multisite. Forma en tu diseño

--- Seleccione un almacén --- Buffalo Grove IL 60089 EE. UU. (EE. UU.) (Buffalo Grove IL 60089 EE. UU. (EE. UU.)) Chicago EE. UU. EE. UU. Tamara (16677 SW Blanton street ALOHA. Oregon 97078) Highland Park (EE. UU., EE. UU. Highland Park, IL 60035 PO Box 723 # 24) Estambul (Estambul, Gençturk Cad.15, Bırlik Han. K-5.d.55 # 1) Estambul (Nişantaşı-Valikonağı cd-Şehit İsmet Armağan sk- No 3/17) París (13R Villa Madrid 92200 Neuilly-sur-Seine) República Moldova, Falesti (s.Fagadau) South Kensington (calle Bute) Adler (Quiet Lane 2, distrito de Kudepsta) Aktobe (Aktyubinskaya str.47/2) Almetyevsk (Almetyevsk, Lenin st.) 13, oficina 306) Anapa (calle Terskaya 88, 3er piso) Astrakhan (calle Kommunisticheskaya 17, oficina 4) Atyrau (Atyrau, Azattyk ave.42, oficina 206) Berdyansk (región de Zaporozhye) Bishkek (Bishkek Chui ave. 32B Izumrud centro comercial, oficina C-5) Blagoveshchensk (50 Let Oktyabrya st. 15. Amurskaya Yarmarka, oficina 575) Buguruslan (Krasnoznamennaya st. 47/2) Veliky Ustyug (Veliky Ustyug, Krasnaya st., 61 (segundo piso) centro de la ciudad) Vladivostok (calle Svetlanskaya 147 oficina 2/4) B olgograd (la ciudad de Volgogrado, autopista Aviatorov 15, almacén 23) Dyurtyuli (calle Agidel, 4, trimestre 2) Yeisk (calle Karla-Marx 42/1) Ekaterimburgo (calle. Pervomayskaya 56, oficina 308) Ekaterimburgo (Mamina-Sibiryaka str. 10, oficina 3) Ivanovo (Sheremetyevsky prospect, 85G, Business Center "Premium Plaza" 2do piso, oficina 212) Izhevsk (Lenina 21, office 304. Business Center "Forum" ) Izberbash (Chapaeva 4 ind.368501) Irkutsk (Irkutsk, calle Gornaya 4 (junto al centro comercial Karamel) oficina 407) Ishimbay (Zorge, casa 18) Yoshkar-Ola (Avenida Lenin 24v, oficina 318) Kazan (10, Carril Odorodorinka Grivki, estación de metro Kozya Sloboda, también calle Dekabristov, 85 "B" Centro de negocios oficina "Relita" 411) Kamensk-Uralsky (Prospect Pobedy 56) Kemerovo (calle Demyan Bednogo, 1 oficina 401) Kiev (calle Olevskaya. 9 apto. 4 (llegar por llamada previa) Komsomolsk-on-Amur (calle Shikhanova 10, oficina 1 entrada desde Komsomolskaya desde el final del edificio) Kostroma (Prospect Mira 51, oficina 15) Krasnodar (calle Krasnaya 124 oficina 302) Krasnoyarsk (Krasnoyarskiy Rabochiy Ave., 120 Shopping Center "Krasnoyarye") Lviv (Sobornaya Square 12A) Makhachkala (Akushskiy 9v) Miass (30 Let VLKSM Street 85) Minsk (Korzhenevskogo, 26) Moscú (Metroh, st.YarKoslavsk: VDNKoslavsk , 10, edificio 4 oficina 10 6) Moscú (Bulevar Simferopolsky) Moscú (Glazovsky Lane 5, Entrada en el arco, puerta a la izquierda de la estación de metro: Smolenskaya-500m, Kropotkinskaya-1km., Park Kultury-1km.) Moscú (m. Chejovskaya, Pushkinskaya, Tverskaya. Strastnoy boulevard, 6, edificio 1, Delovoy Tsentr, oficina 421) Moscú (Lobnya, calle Mayakovskogo, 4A, TP1, tercer piso, oficina 301) Moscú (estación de metro Molodezhnaya, calle Yartsevskaya, edificio 27, edificio 9 Centro Ozdorovitelny "Cuatro Elements ") Moscú (Krasnaya Presnya 38-45) Moscú (g. Metro de Moscú, salida radial Taganskaya 3, a 30 metros del metro. S t. Bolshie Kamenshiki 1, cuarto piso, oficina 30) Moscú (metro Leninsky prospect, Vavilova 9A, edificio 6, oficina 10 B, tercer piso) Moscú (metro Novoslobodskaya, Mendeleevskaya, Mayakovskaya, Belorusskaya (radial). 4th Tverskaya street -Yamskaya, 24 . Entrada a través del arco, ZOO STORE) Moscú (estación de metro Belorusskaya (anillo), a 5 metros de la salida del metro.) Moscú (M. ALTUFEVO, Pskovskaya str.6) Moscú (Moscú, st.Radio house 5, edificio 4.2 piso , 201 oficina (edificio independiente de 3 plantas)) Naberezhnye Chelny (calle Pushkin 4 (45/05), entrada 2, oficina 2) Naberezhnye Chelny (calle Sh.Usmanova, 122 kb. 111 1er piso) Nalchik (Nalchik, Calle Kirov 292a, segundo piso, oficina 6) Nakhodka (calle Pogranichnaya, 6, oficina 304) Nevinnomyssk (Plaza 50 años del 8A de octubre) Nefteyugansk (edificio del microdistrito 12 7) Nizhnevartovsk (Nizhnevartovsk, calle Mira 31B.) Nizhny Novgorod ( Calle Kominterna 139, oficina 603 (Centro de negocios OREOL)) Nizhny Novgorod (metro Gorkovskaya, calle Kostina, 3, BC "Plaza nueva", segundo piso, oficina 239) Nizhny Tagil (cerca L. Krasnoarmeyskaya 42a, oficina del tercer piso 4) Nizhny Tagil (Nizhny Tagil, st. Papanina 5, oficina 1, Kushva, calle Gornyakova 2/11) Nikolaev (calle Ryumin 5/1) Novorossiysk (región de Krasnodar, Novorossiysk, pueblo de Tsemdolina, calle Goldfish, 15) Novorossiysk (calle Murat Akhedzhak, D. 4 ) Novosibirsk (Str., 42 Oktyabrskaya, oficina 601, centro de negocios, tentativamente plaza Lenin, cine Mayakovsky) Novosibirsk (calle Gogol 33/1. 20 metros de la estación de metro Marshal Pokryshkina, centro comercial en Gogolya.) Novotroitsk (calle Sovetskaya. , D .144 apto.26) Novy Urengoy (microdistrito de Druzhba, edificio 4/3, apto.183) Norilsk (Leninsky prospect, 47a, oficina 79) Nur-Sultan (Astana) (Beibitshilik 14, BC Marden, oficina 708) Odessa (b -p French 60 sanatorio de rehabilitación de múltiples perfiles "SARTUS") Oktyabrsky (Microdistrict 32a, building 6, apt.88) Omsk (St. primer piso, porche derecho.) Orsk (Lenin Ave. 93) Pavlodar (St. Satpayev st.71 oficina 107) Perm (Sovetskaya d.52 oficina 1) Perm (calle Druzhby, edificio 34 oficina 305) Pyt-Yakh (Microdistrito 5, edificio 5) Pyatigorsk (calle 295 División de fusileros y 13, edificio 2) Rostov-on-Don (Sobornyi carril 21 oficina 10 B) Salavat (calle Lenin, edificio 3 oficina 209, segundo piso) Samara (calle 106 Novo-Sadovaya, oficina 804, ascensor izquierdo, octavo piso) St San Petersburgo (metro: Vasileostrovskaya, línea 13 de la isla Vasilievsky, 78, oficina 182) San Petersburgo (metro Dostoevskaya (5 metros) y metro Vladimirskaya (300 metros) VLADIMIRSKY PASSAGE 3er piso, entrada central PRIMERA GALERÍA, pr. Vladimirsky 19) San Petersburgo (metro Admiralteyskaya (10 metros) metro Nevsky prospect (7 minutos a pie). TC "ADMIRAL" Calle Malaya Morskaya, 4/1) San Petersburgo (metro Sennaya, metro Sadovaya, m Spasskaya 1 minuto a pie , Calle Efimova 1, piso 2, oficina 4, centro de negocios "Sennaya 4", entrada a la izquierda del café "Sever") Saratov (calle Bolshaya Gornaya, 359V, oficina n. ° 3) Sebastopol (calle Ochakovtsev 19 , centro "Plaza", planta baja, oficina 29/2) Snezhinsk (calle Zababakhina 19 a) Sochi (Sochi ko. Casa Donskaya 15.) Sochi (calle Sovetskaya 42 oficina 204) Stavropol (calle Lomonosov 21 oficina 18) Sterlitamak (calle Khudayberdin 85, 3er piso) Surgut (30 años de la calle Pobedy, 64) Tobolsk (Tobolsk, 6 microdistrito, 11, oficina 39 (entrada desde la perspectiva de Komsomolsky)) Togliatti (40 años Pobedy, 50, oficina 212a, TD Raduga 1er piso) Tomsk (Tomsk, calle Sovetskaya 84) Tuymazy (calle Michurina, 15 oficina 2) Tyumen (calle Herzen, 72, oficina 214) Ulyanovsk (calle Ryabikova, D 73) Ust-Kamenogorsk (57 calle Gorky ., Oficina 213) Ufa (plaza Verhnetorgova, 6 (centro de negocios NESTEROV)) Khabarovsk (calle Postysheva, 16 ofi s 108) Khanty-Mansiysk (G. Khanty-Mansiysk, st. Karl Marx 15, segundo piso.) Chelyabinsk (Prospect Pobeda 168, tercer piso, oficina 36.) Cherkessk (calle Lenin 101) Chita (calle Babushkina 104, oficina 425) Chishmy (Koltsevaya 17) Chishmy (Druzhby ave., 1B ) Suiza (Arosio via Terra Sotto, 1 6939) Shymkent (47 Kolkhoznaya st.) Yuzhno-Sakhalinsk (21 Angarsky Lane) Yakutsk (Dzerzhinsky st. 8 / 3b) Yakutsk (Yakutsk) Yalta (Lenin terraplén, 5a, SEC "Fountain, 4to piso) Yanaul (calle Sovetskaya, 23, oficina N 8, edificio Beryozka) Yaroslavl (ShowRum 57) Yaroslavl (calle Chkalova, 2) Birsk Bashkortostán ()?>

APOTEOSIS APOTEOSIS (del griego apoteosis - deificación), 1) en la Grecia helenística y la Antigua Roma, la deificación de un estadista, héroe, emperador, su adquisición de la esencia divina. Durante el Renacimiento, el nombre del fenómeno se transfirió a su imagen en la pintura, el teatro. En el sentido moderno, la apoteosis es una escena de glorificación de un héroe, un "cuadro vivo" espectacular que expresa plásticamente la idea principal del espectáculo, que concluye una actuación musical o dramática. La forma de la apoteosis (así como una representación panegírica, que fue, por así decirlo, una apoteosis desarrollada en el tiempo) se desarrolló en los teatros de Europa occidental y en el teatro de la corte rusa de los siglos XVI y XVIII; También se desarrolló en el teatro de las épocas revolucionarias: en Francia a fines del siglo XVIII, en Rusia después de la Revolución de Octubre. 2) En un sentido amplio: glorificación, exaltación de una persona, evento, fenómeno.

Enciclopedia moderna. 2000 .

Sinónimos:

Vea qué es "APOFEOSIS" en otros diccionarios:

    - (griego de apoteum para deificar). 1) el reconocimiento de héroes y emperadores romanos a la hueste de dioses. 2) una pintura que representa a una persona famosa en forma de dios pagano. 3) un cuadro solemne que pone fin al teatro, obra de teatro. Diccionario de palabras extranjeras, ... ... Diccionario de palabras extranjeras del idioma ruso.

    Cm … Diccionario de sinónimos

    apoteosis- una m. apothéose f. 1. Leer a la hueste de los dioses. Sl. 18. Según la apoteosis de Hércules. Pelsk. Kum 2 196. La principal belleza de la sala es el plafón, pintado en el lienzo con pinturas al óleo por el pintor Lemoine, y que representa la idolatría hercúlea ... ... Diccionario histórico de galicismos rusos

    Apoteosis- (del griego apoteosis deificación), 1) en la Grecia helenística y la antigua Roma, la deificación de un estadista, héroe, emperador, su adquisición de una esencia divina. Durante el Renacimiento, el nombre del fenómeno se trasladó a su imagen ... Diccionario enciclopédico ilustrado

    - (de la apoteosis griega - deificación), inicialmente entre los antiguos egipcios, y luego entre los griegos y romanos, un rito solemne de deificación de los gobernantes por sus méritos especiales. La apoteosis, transformada con el tiempo en el culto de los gobernantes, se remonta a ... ... Enciclopedia filosófica

    - (del griego. apoteosis deificación). Diccionario enciclopédico grande

    APOTEOSIS, apoteosis, esposo. (Deificación de la apoteosis griega). 1. El antiguo rito de rendir honores divinos al héroe, el emperador (ist.). 2. Especial alabanza pública solemne de alguien, que tiene el carácter de coronar su actividad (libro) ... Diccionario explicativo de Ushakov

    APOFEOSIS, ah, esposo. 1. Glorificación, exaltación de alguien que n. (libro). 2. Escena solemne de la misa final de algunas representaciones teatrales (especial). | adj. apoteosis, oh, oh. Diccionario explicativo de Ozhegov. SI. Ozhegov, N.Yu. Shvedova. 1949 ... ... Diccionario explicativo de Ozhegov

    - (del griego apoteosis deificación) en la antigüedad, la ceremonia de deificación de los antiguos estadistas griegos, más tarde emperadores romanos. En el negocio teatral, la apoteosis se llama la etapa final solemne de la representación o ... ... Ciencias Políticas. Diccionario.

    Jean Auguste Dominique Ingres. Apoteosis de Napoleón, 1853 Apoteosis, desactualizada. apoteosis ... Wikipedia

Libros

  • Apoteosis de la falta de fundamento
  • Apoteosis de la falta de fundamento, Shestov Lev. La apoteosis de la falta de fundamento es probablemente el más famoso de los libros de Lev Shestov, y al menos el más escandaloso. En él, emprende un ataque frontal al conocimiento universalmente vinculante y ...

Cm … Diccionario de sinónimos

BAINKI, sin cambios. ch. (infantil). Dormir. ¿Quieres un baño? Acuéstate bainki. Diccionario explicativo de Ushakov. D.N. Ushakov. 1935 1940 ... Diccionario explicativo de Ushakov

Hacer / hacer bainki (comprar adiós). Zharg. muelle Lanzadera. Dormir. Máximov, 21 ... Un gran diccionario de dichos rusos.

Predico. coloquial Sobre el estado del sueño (en el habla de los niños o en una conversación entre adultos y niños). II int. coloquial Se utiliza como componente de una canción de cuna. Diccionario explicativo de Efremova. T.F. Efremova. 2000 ... Diccionario explicativo moderno de la lengua rusa por Efremova

bainki- b ainki, inconfundible ... Diccionario ortográfico ruso

bainki- sin cambios ... Diccionario ortográfico de la lengua rusa

Int., En func. cuento. = Bai bye (II signo.) ... diccionario enciclopédico

bainki- internacional; en func. cuento. = comprar por 2) ... Diccionario de muchas expresiones

bainki- ba / ink / i, entre ... Diccionario morfemico-ortográfico

Libros

  • Bainki, Tokmakova I.P .. En este libro puede leer o incluso cantar canciones de cuna para su bebé. Reserva con un corte ...
  • Bainki (ed. 2006), Irina Tokmakova. En este libro, puede leer o incluso cantar canciones de cuna para su bebé. Reserve con un corte. ISBN: 5-9524-2404-X ...

Le permite utilizar una instalación de WordPress para varios sitios al mismo tiempo. Al mismo tiempo, cada sitio recibe sus propias tablas en la base de datos con un prefijo único.

Las tablas con datos de usuarios registrados son comunes para todos los sitios de la red. Esta es una ventaja definitiva y, al registrarse una vez, puede obtener acceso a varios sitios. Además, en cada sitio, la misma cuenta puede tener diferentes derechos. Por ejemplo, en un sitio, un usuario puede ser un editor y en otro, un administrador.

En una instalación típica Página de WordPress el registro, la autorización y el restablecimiento de contraseña generan el archivo wp-login.php.

  • wp-login.php - autorización
  • wp-login.php? action = registrarse - registro
  • wp-login.php? action = lostpassword - restablecimiento de contraseña

En el modo Multisitio, el núcleo de WordPress comienza a comportarse de manera un poco diferente, y cuando hace clic en el enlace wp-login.php? Action = register, se producirá una redirección a wp-signup.php. Esta es su página de registro de red, que es el sitio predeterminado de WordPress.

Además de registrar cuentas de usuario normales, puede crear un nuevo sitio web en él, si el superadministrador ha habilitado esta función en la configuración de red (Administrador de red → Configuración → Configuración de red).

En la mayoría de los temas, la página de registro no se ve muy bien. Muchas máscaras usan marcos CSS como Bootstrap y sus propias clases específicas para diseñar diferentes elementos en las páginas, por lo que es difícil escribir un solo HTML que funcione para todos.

Pero no se desespere si la página se ve desordenada. El archivo wp-signup.php es excelente al principio, cuando no tiene tiempo para trabajar en cada detalle del sitio, puede concentrarse en otras páginas y contenido más importantes.

Cuando esté listo para crear su propia página de registro, wp-signup.php será una buena muestra y un ejemplo para ayudarlo a comprender la gama de funciones que proporciona WordPress para manejar y validar la entrada del usuario y crear nuevas cuentas.

Sitio principal de la red

De forma predeterminada, WordPress abre una página de registro (wp-signup.php) en el dominio principal (sitio) de la red. Sin embargo, puede crear páginas de registro para todos los sitios de la red, incluso si tienen un tema.

Consideraremos el caso en el que todos los sitios de la red utilizan el mismo tema, pero cada uno de ellos tiene una página de registro. Los sitios difieren en el idioma (inglés y ruso), por lo que la página de registro se mostrará en el idioma "nativo" del sitio. Si los sitios usan diferentes temas, todo dependerá de qué tipo de temas sean, si el mismo diseño les conviene (una gran situación que puede empujarlo a unificar todos sus temas) o si vale la pena trabajar las páginas individualmente.

Alternativa a functions.php

Orden de archivo

Los complementos MU pueden contener cualquier cantidad de archivos y estructura que le parezca lógico. Me apego a algo como esta jerarquía:

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

El archivo load.php incluye traducciones y todos los "complementos" necesarios:

// Cargar traducciones para complementos MU load_muplugin_textdomain ("selena_network", "/ selena-network / languages ​​/"); // Funcional para la página de registro requiere WPMU_PLUGIN_DIR. "/selena-network/signup/plugin.php"; // Otro complemento // requiere WPMU_PLUGIN_DIR ...

Las carpetas de complementos se almacenan dentro del directorio selena-network. Cada uno tiene su propio plugin.php, que incluimos en load.php. Esto brinda la flexibilidad y la capacidad de deshabilitar y habilitar instantáneamente componentes individuales en un proyecto de trabajo en caso de emergencia.

Página de registro

Habiendo averiguado dónde y cómo escribiremos el código, podemos proceder a crear la página de registro.

Creemos una página con la dirección example.org/signup/ a través de una interfaz normal. Como dirección, puede utilizar cualquier URL que parezca adecuada para su proyecto.

Redirigir a la página de registro requerida

Para que WordPress conozca nuestra nueva página de registro y redirija a ella, al hacer clic en el enlace "Registrarse", se utiliza el filtro wp_signup_location. Se puede encontrar dentro de wp-login.php y es responsable de redirigir a wp-signup.php por defecto.

Caso "registro": if (is_multisite ()) (wp_redirect (apply_filters ("wp_signup_location", network_site_url ("wp-signup.php"))); salir; // ...

Como recordará, de forma predeterminada, la página de registro se abre en el dominio principal de la red. Es por eso que aquí se usa network_site_url ().

Agreguemos nuestro controlador al filtro en mu-plugins / selena-network / signup / plugin.php, que devolverá la dirección de la página de registro en el sitio actual:

Función selena_network_signup_page ($ url) (return home_url ("registro");) add_filter ("wp_signup_location", "selena_network_signup_page", 99);

selena_network es el prefijo que utilizo en los nombres de todas las funciones dentro de los complementos MU en mi sitio para evitar colisiones, debería ser reemplazado por mi propio prefijo único. El filtro tiene una prioridad de 99 porque algunos complementos como bbPress y BuddyPress pueden sobrescribir esta URL con la suya propia (los complementos MU se cargan antes que los complementos normales, ver más arriba).

Tenga en cuenta que se utiliza home_url (), que, a diferencia de network_site_url (), devuelve la dirección del sitio actual, no el sitio principal de la red.

Funcionalidad wp-signup.php

El archivo wp-signup.php contiene muchas funciones y código. Para ver el panorama general, puede utilizar el plegado de código. A esto se le suele llamar "plegado de código" en inglés.

Al principio del archivo se producen de 1 a 80 líneas (en la versión 4.1.1) varios controles y mostrando el "inicio" de la página usando get_header ().

A continuación, se declaran muchos métodos y antes de comenzar a trabajar con ellos, vale la pena comprender qué hace cada función. Muchos de ellos a menudo usan otras funciones con el prefijo wpmu_ dentro de ellos, todas las cuales están declaradas en el archivo wp-includes / ms-functions.php. Esta sección es difícil de entender sin ver el código usted mismo. A continuación se muestra una breve descripción de las funciones principales en caso de que tenga dificultades.

  • wpmu_signup_stylesheet (): genera CSS adicional en la página de registro.
  • show_blog_form (): campos para el registro del sitio (dirección, nombre, visibilidad para los motores de búsqueda).
  • validate_blog_form (): valide la dirección y el nombre del sitio ingresados ​​usando wpmu_validate_blog_signup ().
  • show_user_form (): campos para el registro del usuario (inicio de sesión y dirección de correo electrónico).
  • validate_user_form (): validación del inicio de sesión y la dirección de correo electrónico ingresados. correo usando wpmu_validate_user_signup ().
  • signup_another_blog (): campos para registrar nuevos sitios usando show_blog_form () para los usuarios que ya están registrados en el sitio.
  • validate_another_blog_signup (): valida la URL y el título del sitio usando validate_blog_form ().
  • signup_user () es la función principal para mostrar los campos de la página de registro.
  • validate_user_signup (): valida el nombre de usuario y la dirección de correo electrónico. correo usando validate_user_form ().
  • signup_blog (): campos para ingresar la dirección, el nombre y la visibilidad del sitio (el segundo paso del registro) usando show_blog_form ().
  • validate_blog_signup (): comprueba el inicio de sesión y la dirección de correo electrónico. correo, dirección y nombre del sitio.

En la parte inferior del archivo wp-signup.php (de la línea 646 en la versión 4.1.1), la lógica principal de la página de registro, que utiliza todos los métodos descritos anteriormente. Esta parte del código no se mueve a una función. Al final se llama a get_footer ().

Copie la funcionalidad de wp-signup.php

A continuación, describiremos el procedimiento para copiar wp-signup.php en complementos MU y realizar cambios en la "bifurcación". Quizás esto no parezca lo mejor la direccion correcta... En su lugar, puede escribir su propia validación de formulario y mostrar funciones desde cero utilizando clases en lugar de funciones normales. En mi opinión, wp-signup.php ya tiene toda la lógica necesaria para nuestra página, solo queda hacer pequeños cambios.

Cuando actualiza WordPress, wp-signup.php cambia de vez en cuando, pero esto no significa que con cada lanzamiento tenga que sincronizar su fork. Las funciones dentro de wp-signup.php están esencialmente involucradas solo en la salida HTML, validación de datos, creación de cuentas y sitios, métodos con el prefijo wpmu_, declarados en ms-functions.php, están involucrados.

Comencemos a crear una función que mostrará el formulario de registro en la página. Para hacer esto, copie wp-signup.php desde la raíz de WordPress a mu-plugings / selena-network / signup /. Vamos a conectarlo dentro de mu-plugins / selena-network / signup / plugin.php).

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

Elimine todas las comprobaciones necesarias e innecesarias desde el principio del archivo copiado. En la versión 4.1.1, este es todo el código de 1 a 80 líneas.

Ahora estamos listos para crear la función principal para mostrar el formulario de registro. Para hacer esto, mueva toda la lógica desde la línea 646 hasta el final del archivo a una función llamada selena_network_signup_main. Al final, eliminaremos los dos cierres adicionales.

(líneas 722 y 723), así como una llamada a get_footer ().

En el recién creado selena_network_signup_main (), al principio, declaramos la variable global active_signup, que es utilizada por todos los demás métodos de este archivo. Y agregue una llamada al evento before_signup_form, que eliminamos desde el principio del archivo.

Función selena_network_signup_main () (global $ active_signup; do_action ("before_signup_form"); // ...)

Ahora todo lo que queda es cambiar el diseño en todos los lugares donde sea necesario y la página de registro está lista.

Salida del formulario de registro

Hay al menos dos opciones aquí. Más manera conveniente- cree un código corto y colóquelo en la página usando un editor normal.

// Crea un shortcode network_signup add_shortcode ("network_signup", "selena_network_signup_main");

La segunda opción es crear una plantilla de página page-signup.php en la carpeta del tema secundario. En lugar de la palabra "registro", puede utilizar una identificación única asignada a la página. Dentro de la plantilla, agregue el diseño requerido y llame a selena_network_signup_main () en el lugar correcto.

Como resultado, mi página de registro se ve mucho mejor y más limpia.

Página de activación

Por WordPress predeterminado divide convencionalmente el proceso de registro en Multisite en dos pasos: completar un formulario en el sitio y activar una cuenta al hacer clic en el enlace enviado a Email... Después de completar el formulario creado en la sección anterior, WordPress envía un correo electrónico con una pequeña instrucción y un enlace para activar su cuenta.

El archivo wp-activate.php ubicado en el directorio raíz de WordPress es responsable de mostrar la página de activación. wp -active.php también se puede cambiar por completo. El proceso es similar al que ya hicimos para wp-signup.php.

Creemos una página example.org/activate/ a través de una interfaz normal. Utilice la URL que considere adecuada para la dirección.

Copiemos el archivo wp -active.php a nuestros complementos MU y conéctelo a mu-plugins / selena-network / signup / plugin.php.

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

No hay mucho contenido dentro, a diferencia de wp-signup.php. El archivo realiza la única operación: activa la cuenta si se recibe la clave correcta y muestra un mensaje de error o la finalización exitosa de la operación.

Eliminemos todas las comprobaciones y requisitos innecesarios: de 1 a 69 líneas en WordPress 4.1.1. Al final, eliminemos la llamada get_footer (). Mueva el resto del contenido a la función selena_network_activate_main ().

Es interesante notar que la constante WP_INSTALLING se declaró aquí antes de cargar WordPress (wp-load.php). Su presencia hace que WordPress no cargue plugins.

Como en el caso de la página de registro, solo queda corregir el diseño cuando sea necesario. También puede cambiar el texto de los mensajes mostrados (en este caso, no olvide agregar el dominio de texto de sus complementos MU a todas las funciones del traductor, por defecto no está instalado en ningún lugar).

La función lista para usar se puede usar en una página creada previamente a través de un código corto o una plantilla separada en un tema secundario.

Correos electrónicos de activación con enlaces correctos

La página de activación está lista para funcionar, pero WordPress no lo sabe y seguirá enviando correos electrónicos de activación con un enlace a wp-enable.php. A diferencia de wp-signup.php, aquí no hay ningún filtro que le permita cambiar la dirección. En su lugar, debe escribir su propia función que enviará correos electrónicos con los enlaces correctos.

Al momento de completar y enviar el formulario en la página Registro de WordPress llamadas wpmu_signup_ usuario() o wpmu_signup_ Blog() según el tipo de registro. Ambas funciones crean nueva entrada en la tabla wp_signups, llenándola con el contenido necesario, entre los que se encuentra una clave de activación de cuenta.

Luego, dependiendo de la función, se llama a wpmu_signup_ usuario _notification () o wpmu_signup_ Blog _notification (). Ambas funciones tienen una funcionalidad similar: generan y envían un correo electrónico con un enlace de activación, pero aceptan argumentos diferentes. Ambos tienen filtros para "interceptar" el evento.

Si (! Apply_filters ("wpmu_signup_user_notification", $ usuario, $ user_email, $ clave, $ meta)) devuelve falso;

Para activar cuentas con la creación de un blog:

If (! Apply_filters ("wpmu_signup_blog_notification", $ dominio, $ ruta, $ título, $ usuario, $ usuario_email, $ clave, $ meta)) (devuelve falso;)

Todo lo que queda es escribir sus propios controladores, dentro de los cuales envíe correos electrónicos a través de wp_mail (), y al final, asegúrese de dar falso para que WordPress no envíe un correo electrónico de activación dos veces: uno es suyo, el otro es predeterminado correo electrónico con un enlace a wp-enable.php.

Función selena_network_wpmu_signup_user_notification ($ user, $ user_email, $ key, $ meta = array ()) (// Generar el encabezado, texto y encabezados del correo electrónico // ... // Enviar el correo electrónico o agregar una tarea Cron para enviar el email wp_mail ($ user_email, wp_specialchars_decode ($ subject), $ message, $ message_headers); // Enviar falso para que WordPress no envíe el correo electrónico de activación dos veces return false;) add_filter ("wpmu_signup_user_notification", "selena_network_wpmu_signup_user_notification", 10, 4);

Si está enviando correos electrónicos a través de un servidor SMTP o el número de registros es muy alto, debe considerar no enviar correos electrónicos instantáneamente. En su lugar, puede agregar tareas Cron utilizando WordPress Cron.

Cerrar el acceso a wp-signup.php y wp-enable.php

Después de crear sus propias páginas de registro y activación, es posible que deba cerrar los "originales". Por ejemplo, si hay campos adicionales en la página de registro que se deben completar. Además, muchos sitios de WordPress están sujetos a registros de spam.

Para resolver dos problemas en un solo paso, puede pedirle a Apache que devuelva 404 si intenta abrir estas páginas. Para hacer esto, solo necesita registrar un par de RewriteRule adicionales en su archivo de configuración o .htaccess.

RewriteEngine en RewriteBase / # Conocer las expresiones regulares nunca será superfluo :) RewriteRule ^ wp-signup \ .php - RewriteRule ^ wp-active \ .php - # BEGIN WordPress # No toque las reglas predeterminadas de WordPress :) # ... # FIN WordPress

Conclusión

Hay muchas soluciones para este y muchos otros "problemas" relacionados con WordPress en Internet. Por ejemplo, para crear páginas de registro y activación, algunos sugieren reescribir el wp-signup.php y wp-enable.php originales. No vale la pena hacerlo, porque si actualiza WordPress, perderá todos los cambios realizados en los archivos y tampoco podrá verificar la integridad del núcleo con.

Al desarrollar cualquier complemento, tema o solución, debe dedicar un poco de tiempo a familiarizarse con lo que sucede dentro de WordPress. Hay muchas herramientas de depuración útiles para esto.

PD

Para asignar automáticamente diferentes roles a nuevos usuarios, puede usar el complemento de administración de usuarios multisitio.

Si tiene alguna pregunta o dificultad durante la creación de las páginas de registro y activación después de leer el artículo, deje un comentario y definitivamente le responderemos.

27.03.2015 27.03.2015

Desarrollador de WordPress. Ama el orden en todo y comprende nuevas herramientas. Inspirado en la arquitectura de componentes de Symfony.

  • Creamos nuestra propia página de registro para multisitio en lugar del estándar wp-signup.php.

    En una instalación típica de WordPress, la página de registro (inicio de sesión, restablecimiento de contraseña) muestra el archivo wp-login.php.

    • /wp-login.php - autorización
    • /wp-login.php?action=register - registro
    • /wp-login.php?action=lostpassword - restablecimiento de contraseña

    Hay condiciones separadas para multisitio en wp-login.php. Entonces, cuando haga clic en el enlace /wp-login.php?action=register en un sitio múltiple, WordPress lo redireccionará a la página /wp-signup.php. En muchos temas, la página no parece muy atractiva, así que haremos la nuestra.

    Sitio principal de la red

    De forma predeterminada, WordPress abre una página de registro (wp-signup.php) en el dominio principal (sitio) de la red. Sin embargo, uno puede hacer página separada registros para cada sitio en la red, incluso si tienen diferentes temas. Consideraremos el caso en el que todos los sitios de la red tienen su propia página de registro, pero se utiliza el mismo tema y los sitios solo difieren en el idioma. Si se utilizan diferentes temas, será necesario escribir más código.

    functions.php?

    No. El nombre de este archivo parece mencionarse en todos los artículos de WordPress. En nuestro caso, dado que la funcionalidad de registro está diseñada para varios sitios, tiene sentido moverla a complementos MU que se cargan cuando abre cualquier sitio.

    Digresión lírica

    Vale la pena señalar que los complementos MU se cargan antes que los complementos normales y antes de que el núcleo de WordPress esté completamente cargado, por lo que llamar a algunas funciones puede provocar errores fatales en PHP. Esta carga "temprana" también tiene sus ventajas. Por ejemplo, dentro de cualquier tema, no puede aferrarse a algunas acciones que se activan incluso antes de que se cargue el archivo functions.php desde el tema. Un ejemplo de esto son las acciones del complemento Jetpack de la forma jetpack_module_loaded_related-posts (related-posts - el nombre del módulo) con el que es posible rastrear la actividad de los módulos en Jetpack. Es imposible "aferrarse" a esta acción desde el archivo de tema, porque la acción ya se ha activado antes de que se cargue el tema; los complementos se cargan antes que los temas. Eche un vistazo a la imagen general del pedido. Descargas de WordPress se puede encontrar en la página de referencia de acción en el código.

    Orden de archivo

    Los complementos MU pueden contener cualquier cantidad de archivos y cualquier estructura que le parezca lógica. Me apego a algo como esta jerarquía:

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

    Todos los "complementos" necesarios para nuestra red están conectados en el archivo load.php:

    // Cargar traducciones para todos los complementos load_muplugin_textdomain ("selena_network", "/ selena-network / languages ​​/"); // El registro de red requiere WPMU_PLUGIN_DIR. "/selena-network/signup/plugin.php"; // Otros complementos // requieren WPMU_PLUGIN_DIR ...

    Las carpetas de complementos se almacenan dentro de la carpeta selena-network, cada una tiene su propio plugin.php, que incluimos en load.php. Esto le brinda flexibilidad y la capacidad de encender y apagar las cosas rápidamente.

    Dirección de la página de registro

    Para especificar la dirección de la página de registro, se utiliza el filtro wp_signup_location. Se puede encontrar dentro del archivo wp-login.php y es responsable de redirigir a wp-signup.php.

    Caso "registro": if (is_multisite ()) (wp_redirect (apply_filters ("wp_signup_location", network_site_url ("wp-signup.php"))); salir;

    Agreguemos nuestra función a mu-plugins / selena-network / signup / plugin.php, que devolverá la dirección de la página de registro en el sitio actual:

    Función selena_network_signup_page ($ url) (return home_url (). "/ Signup /";) add_filter ("wp_signup_location", "selena_network_signup_page", 99);

    selena_network es el prefijo que utilizo en los nombres de todas las funciones dentro de los complementos MU en mi sitio para evitar colisiones, debería ser reemplazado por mi propio prefijo único. El filtro tiene una prioridad de 99 porque algunos complementos como bbPress y BuddyPress pueden sobrescribir esta URL con la suya propia (los complementos MU se cargan antes que los complementos normales, ver más arriba). Tenga en cuenta que home_url () se usa en lugar de network_site_url () para mantener al visitante en el mismo dominio. Se puede utilizar cualquier URL como dirección.

    Crear una pagina

    Ahora creemos una página con la dirección site.com/signup/ a través de la interfaz habitual, y en la carpeta del tema hijo la plantilla para nuestro nueva pagina- page-signup.php. Se puede utilizar una identificación única en lugar de la palabra "registro".

    Dentro de la nueva plantilla, debe llamar a la función selena_network_signup_main (), que mostrará el formulario de registro.

    Cabe señalar que no se requiere todo el proceso con plantillas y, en su lugar, puede crear su propio código abreviado, que también llamará a la función selena_network_signup_main ().

    wp-signup.php y wp-enable.php

    Ahora comencemos a crear una función que mostrará el formulario de registro. Para hacer esto, copie los archivos wp-signup.php y wp-active.php desde la raíz de WordPress a mu-plugings / selena-network / signup / (y no olvide conectarlos dentro de mu-plugins / selena-network / signup / plugin.php) ... Las manipulaciones adicionales con archivos son extremadamente difíciles y requieren mucho tiempo de describir, por lo que tendrá que hacerlas usted mismo. Solo describiré qué es exactamente lo que se debe hacer y publicar. archivos fuente tu proyecto:

    1. Al principio del archivo, elimine todos los requisitos, llamadas a funciones y otro código fuera de las funciones.
    2. Cambie el nombre de todas las funciones agregando prefijos únicos a los nombres.
    3. Envuelva la parte inferior del código wp-signup.php en la función selena_network_signup_main y escriba global $ active_signup al principio; ...
    4. Reemplace el diseño con el suyo en los lugares correctos.

    Dentro de wp-active.php, debe hacer aproximadamente lo mismo:

    1. Elimine todo el código fuera de las funciones, envuelva el diseño en una función separada.
    2. Cambie el diseño cuando sea necesario.

    El archivo wp -active.php es responsable de la página de activación de la cuenta. Al igual que con la página de registro, necesita crear una plantilla separada para ella, dentro de la cual llama a la función desde el archivo wp-active.php.

    Enviamos cartas de activación

    La página de registro envía al visitante un correo electrónico con un enlace para activar su cuenta. Por defecto, esto lo hace la función wpmu_signup_user_notification () del archivo ms-functions.php. Su funcionalidad se puede tomar prestada para su función. La razón para dejar de usar esta función es porque envía el enlace de activación de la cuenta desde wp-enable.php. Puede "deshabilitar" esta función usando el filtro wpmu_signup_user_notification, dando falso (si no lo hace, la carta de activación se enviará dos veces, está bien, de hecho, dos letras diferentes).

    Función armyofselenagomez_wpmu_signup_user_notification ($ user, $ user_email, $ key, $ meta = array ()) (// ... // Código de la función wpmu_signup_user_notification () wp_mail ($ user_email, wp_specialchars_decode ($ message_headers), $ message), ; devolver falso;) add_filter ("wpmu_signup_user_notification", "armyofselenagomez_wpmu_signup_user_notification", 10, 4);

    Como resultado, la página de registro en el tema de Selena se ve mucho más limpia y precisa.

    Conclusión

    Hay muchas otras formas no muy correctas de hacer lo mismo en Internet: redireccionamientos Apache, formularios AJAX que no funcionarán sin Java Script, etc.

    Tenga en cuenta que debe editar los archivos con cuidado y tratar de no desviarse mucho del original, de modo que en el futuro, si WordPress cambia los archivos wp-signup.php y wp-active.php, sería más fácil compararlos para encontrar cambios.

    No te olvides de mirar adentro fuente todas las funciones descritas anteriormente para comprender completamente qué y cómo está sucediendo dentro del código.

    Prima. Protección contra spam

    Incluso los sitios de WordPress más pequeños están sujetos a frecuentes registros de spam. Puedes escribir condiciones infinitas para filtrar bots, a menudo más como intentar crear inteligencia artificial 🙂 En el caso de un multisitio, la redirección habitual en Apache me ayudó mucho, con lo cual, al abrir /wp-signup.php y / wp- acitvate.php, pedí 404 (no soy un experto en la configuración de Apache, por lo que mis reglas pueden no ser muy correctas).

    RewriteEngine en RewriteBase / RewriteRule ^ wp-signup \ .php - RewriteRule ^ wp-active \ .php - # BEGIN WordPress # No toque las reglas de WordPress por defecto :) # ... # END WordPress

    P. S. Trato de describir con el mayor detalle posible algunas cosas de terceros, porque cuando comencé, a veces no había nadie que sugiriera y explicara muchas cosas. También creo que pequeños consejos similares sobre otros materiales impulsarán a alguien a aprender algo nuevo y ampliar su campo de conocimiento. Uso de entradas de RewriteRule expresiones regulares, no son complicados en absoluto, por ejemplo, el símbolo ^ significa el comienzo de una línea.