Pregunta sobre Developing with WordPress de Wordpress:

wp_insert_user con rol específico cómo

Un usuario preguntó 👇

en un vuelo si alguien … planeo eso

              $userdata = array(
               'user_login'       =>  'myname',
               'user_pass'        =>  'mypass,
               'user_email'       =>  '[email protected],
               'user_registered'  =>  date_i18n( 'Y-m-d H:i:s', time() ),
               'role'             =>  'editor'
               );
               
          $user_id = wp_insert_user( $userdata );

crearía mi nombre de usuario, con capacidad de editor. En cambio, el usuario creado es un suscriptor. Puedo preguntar después de insertarlo, para actualizar el valor de usermeta en las capacidades, pero me gustaría saber, si es posible, qué valor se debe pasar para el rol de parámetro en lo anterior, al usuario probado para resultar, como editor, ¿no se actualiza después del usermeta relacionado?

(@jruescher)

Hace 3 años, 1 mes

Hola,

prueba esto:

https://wordpress.stackexchange.com/a/224093/37184

Entonces envía primero y actualiza después … No estoy seguro de por qué el rol no funciona en el envío.

(@axewww)

Hace 3 años, 1 mes

desafortunadamente, el enlace de arriba no responde … aunque

No estoy seguro de por qué la función no funciona con la interferencia

La pregunta es. ¿Cuál es la forma correcta de ejecutar este parámetro (si esto no es posible), por lo que no necesita actualizar después del rol?

(@bcworkz)

Hace 3 años, 1 mes

A su código le faltan algunas comillas. Después de corregir eso, funciona correctamente en mi sitio, agregando un rol para el Editor a un usuario. Si tiene algún problema con esto en su sitio, su tema o uno de los plugins es crear un conflicto o prevenir deliberadamente la asignación de roles. ¿Tiene algún plugin de seguridad en ejecución? Pueden estar restringiendo la asignación de roles privilegiados a nuevos usuarios.

(@axewww)

Hace 3 años, 1 mes

Hola a todos, sí, veo que el código no era correcto, debido a que se pegó / editó sobre la marcha durante la publicación, así que veré que no fue correcto, pero el tiempo de editar se acabó. .sí, funcionó, pero funcionó. ¿El resultado de que el código interfiere con el editor de roles del usuario? Vuelve a mí, nunca, un suscriptor. Entonces necesito actualizar más tarde, con algo como esto:
$wpdb->query("UPDATE wp_usermeta SET meta_value = 'a:1:{s:6:"editor";b:1;}' WHERE user_id = '$user_id' AND meta_key = 'wp_capabilities'");
la última vez por un tiempo trato de ver en class-wp-user.php qué sucede y si me equivoco en algo, pero después de interrumpirme para no seguirlo en este momento … puedes ¿Confirma que en su prueba se ingresa al usuario con un editor de roles si se ejecuta un editor de caracol para el parámetro de rol?

Esta respuesta fue modificada hace 3 años, hace un mes por.

(@axewww)

Hace 3 años, 1 mes

ps, ahora he leído su respuesta y no, no hay un plugin de seguridad en el que pruebo el código, y el tema nunca es de veinte años. Pero si dices que funciona en tu prueba, intentaré volver a probar todo pronto para verificar más …

(@bcworkz)

Hace 3 años, 1 mes

Sí, la función de editor se asigna al usuario que se ingresó inmediatamente después de que su código se ejecutó en mi sitio y no hizo nada más relacionado con el usuario que no sea verificar la tabla de la lista de usuarios para confirmar la función. El efecto esperado de ejecutar otros roles es asignar el rol solicitado, ya sea administrador, autor o cualquier otro rol válido.

¿Dónde ingresaste tu código? ¿Cuándo se ejecuta? Si es demasiado pronto, aún no se han establecido roles. Ejecuté su código desde una página de administración que uso para probar fragmentos de código, por lo que es como poner código en una plantilla de página en cuanto al tiempo de ejecución.

(@axewww)

Hace 3 años, 1 mes

Dejaré de ejecutar el código inmediatamente después de verificar la función wp_insert_user (), y veré en este momento que el rol siempre se establece como suscriptor de db, así que creo que no hay otra función y no puedo cualquier otra cosa que le moleste, el resultado es este.

https://plugins.trac.wordpress.org/browser/wp-w3all-phpbb-integration/trunk/class.wp.w3all-phpbb.php#L1300 código
Oh 1371
a 1410

ps, así que necesito verificar más y averiguar qué está mal con esto, comenzando desde cero tal vez …

Esta respuesta fue modificada hace 3 años, hace un mes por.

(@bcworkz)

Hace 3 años, 1 mes

Gracias por la referencia del código. Desafortunadamente, debido a que no tengo idea de cuándo se llama a w3_check_phpbb_profile_wpnu (), realmente no me dice lo que quería obtener.

¿Has probado la última versión de WP w3all phpBB? Fue liberado hace 3 días. Sospecho que es causado por un plugin o conflicto de tema de algún tipo, que está vinculado al proceso de entrada del usuario. Sin embargo, antes de que veamos eso, podemos descartar un problema contextual colocando temporalmente su botón en una de sus plantillas de tema. Cargue la página usando la plantilla modificada. Si el usuario ingresa como Editor de esta manera, entonces sabemos que hay una pregunta sobre cuándo / dónde se ejecuta el código. Si el problema con el código de la plantilla también persiste, es probable que haya un conflicto.

Puede reducir el conflicto cambiando a uno de los veinte * temas y deshabilitando todos los plugins. Nuevamente, coloque temporalmente el fragmento en una plantilla de tema y cargue una página relacionada. El usuario debe ingresarse correctamente en esta configuración. Vuelve a tu tema habitual. Marque para volver a ingresar al usuario, usando la misma plantilla modificada. Comience a activar sus plugins uno por uno. Cuando el usuario vuelve a entrar en el rol incorrecto, el último módulo de activación tiene la culpa.

En una nota lejana, puede que le interese el parámetro de URL de «marcado» disponible para cada enlace de repositorio, que resalta las líneas de texto. Por ejemplo: https://plugins.trac.wordpress.org/browser/wp-w3all-phpbb-integration/trunk/class.wp.w3all-phpbb.php?marks=1371-1392#L1361

Lo que ha hecho está perfectamente bien y es completamente comprensible. Pensé que las «marcas» eran lindas cuando me enteré, así que solo estoy pasando la información 🙂

(@axewww)

Hace 3 años, 1 mes

voy a volver a comprobar todo lo que pueda:
w3_check_phpbb_profile_wpnu()
en wp_w3all.php está envuelto en wp_authenticate:

// a phpBB user not logged into phpBB, WP login first time 
add_action( 'wp_authenticate', array( 'WP_w3all_phpbb', 'w3_check_phpbb_profile_wpnu' ), 10, 1 );

intenta verificar si el usuario está conectado, si ha presentado credenciales en phpBB: si es así, y si no existe en WP, inserte la función en el usuario en WP. Así que creo que piensas que el código cambia de alguna manera el flujo y el resultado que ingresa el usuario … haz la misma acción, verifica_phpbb_credentials https://plugins.trac.wordpress.org/browser/wp -w3all -phpbb-integration / trunk / class.wp.w3all-phpbb.php? mark = 560-612 # L560 función principal que presenta un usuario en este caso, si presenta una cookie phpBB válida, y si no hay ningún usuario con el mismo nombre de usuario en WP. Dado que estas dos cosas son lo único en el que puede surgir el problema, no me permito volver a comprobar qué puede estar mal: dudo que haya un mayor nivel de conflicto entre las llamadas que deberían , a pesar de la ejecución, puede ocurrir en un caso u otro, pueden dispararse juntos en algún momento … pero como la función interrumpe a un usuario si no existe, acepto que esto no es posible, o No estoy muy confundido … quería profundizar tan pronto …

Para las marcas de código, ¡es muy útil! ¡Gracias!

(@axewww)

Hace 3 años, 1 mes

ps después de caffè, me doy cuenta de que no respondí una pregunta anterior, sobre la última versión instalada: la respuesta divertida: sí, ¡porque prometí el código relajado!

Esta respuesta fue modificada hace 3 años, hace un mes por. Razón: ¡era un caffè!

(@bcworkz)

Hace 3 años, 1 mes

¡Oh, eres el autor del plugin! Evidencia de que puedo perder datos importantes. Bien podría cumplir con eso teniendo en cuenta 😉 No creo que cambie nada más que actualizarlo. Hice otra prueba rápida en mi sitio. Conecté wp_authenticate y agregué arbitrariamente un usuario de rol de editor a cualquier inicio de sesión. No se comprueba nada que ya exista, solo se inserta la entrada. El usuario con función de editor se ingresa como se esperaba, sin importar quién inicie sesión. Usuario, suscriptor, administrador no válido, cualquier cosa que haga que el gancho funcione. Confirmé que el usuario adicional puede iniciar sesión y puede hacer cosas como un editor. ¡Realmente funciona! (No estaba muy seguro de que lo haría)

Vale la pena mencionar que no tengo instalado phpBB. Esperaría que sus dedos estuvieran en el proceso de autenticación. Dado que su plugin es claramente un requisito previo, deberá solucionarlo de alguna manera. Aún así, es una buena idea verificar que phpBB sea el culpable. Vuelva a todo de forma predeterminada, que es la forma en que debería desarrollar de todos modos (más cualquier módulo de requisito previo, pero desactívelos también ahora). Cree un plugin de prueba que solo permita a un usuario iniciar sesión usando su lógica. Ajuste su código para compensar que phpBB no esté activado. El usuario debe trabajar en esta configuración. Active phpBB y vuelva a verificar. Deje su plugin normal desactivado, use el plugin de prueba nuevamente. Dudo que el rol se reduzca ahora, lo que confirma que phpBB está cambiando la asignación de roles de alguna manera.

Si tiene algún problema para hacer una figura que funcione, intente consultar con los desarrolladores de phpBB. Desafortunadamente, tengo poca experiencia con phpBB y sería de poca ayuda.

Me pregunto si podría haber un enfoque completamente diferente, pero tal vez no importe, el problema podría ser si se interrumpe al usuario y no cuándo o qué dispara cerrará. Probablemente podría ingresar un conjunto de datos directamente en la tabla de usuario sin usar las funciones WP habituales sobre los métodos $ wpdb. Hay más en la entrada del usuario que ese conjunto. Asegúrese de ingresar el meta de usuario requerido si sigue esta ruta. Puede haber incluso más en la entrada del usuario que el usuario y las meta tablas de usuario, IDK.

(@axewww)

Hace 3 años, 1 mes

Gracias por el procedimiento de depuración sugerido 😉 Alrededor del punto sobre las interacciones phpBB, no hay nada que pueda interferir, los roles se consideran separados en los dos CMS. La única vez que se comparan roles / permisos, y se usan de la manera descrita anteriormente, es cuando un usuario ingresa a WP, y aún no existe en phpBB.

Este tema puede considerarse resuelto / cerrado, y trataré de verificar lo antes posible que interfiera con otras cosas, desde funciones simuladas hasta el plugin wp_w3all.

Así que continuaré aquí como respuesta cuando esté listo. Gracias.

(@axewww)

Hace 3 años, 1 mes

así que esta mañana veré lo que podría salir mal e intentaré todo: está de vuelta en todo orden, incluso si elimino el código que se agregó en la actualización: quiero decir , el usuario ingresa con el rol correcto sin actualización posterior … Estaba realmente confundido en cuanto a por qué alguna vez regresó a un suscriptor mientras probaba anoche, poniendo al usuario en WP. Tal vez había algún fantasma en el aire… o estuve cerca de ser un fantasma anoche. No estoy seguro de qué es más cierto entre los dos. Salud !!

¿Solucionó tu problema??

0 / 0

Deja una respuesta 0

Tu dirección de correo electrónico no será publicada.