Inicio › Foros › Varios (seguridad, internet, ofimática, errores) › Problemas con avatar en WordPress con BuddyPress y bbPress
- Este debate tiene 5 respuestas, 2 mensajes y ha sido actualizado por última vez el hace 7 años, 11 meses por alonsojpd.
-
AutorEntradas
-
04/22/2017 a las 12:34 #1174VariosModerador
Hola, tengo una web con WordPress, uso los foros bbPress y he instalado recientemente el BuddyPress. He visto que cuando un usuario sube su foto de avatar o perfil a través de BuddyPress no aparece luego si escribe en los foros de bbPress ¿a qué puede ser debido?
Según he leído sí debería estar sincronizado BuddyPress con bbPress, tengo la opción de «Habilitar la sincronización de perfil de BuddyPress a WordPress.», pero no lo hace. Si se ha creado un usuario nuevo con BuddyPress o bien si se cambia la foto de avatar o perfil desde BuddyPress sí que sale bien luego en el foro bbPress y en los comentarios de los artículos.
En cambio, si es un usuario creado antes de que instalara BuddyPress, le aparece el avatar viejo, si lo cambia en BuddyPress no le muestra el nuevo en los foros bbPress y en los comentarios de los artículos (entradas).
Me estoy volviendo loco con esto, no sé qué hacer.
04/22/2017 a las 12:35 #1175alonsojpdSuperadministradorEn primer lugar ¿tienes algún otro gestor de avatares instalado en WordPress, por ejemplo el plugin «WP User Avatar»?
04/22/2017 a las 12:36 #1176VariosModeradorSí, efectivamente tengo el WP User Avatar, pero he visto que es compatible con BuddyPress ¿puede ser por este plugin?
04/22/2017 a las 12:38 #1177alonsojpdSuperadministradorAsí es, WP User Avatar es compatible con BuddyPress pero solo su versión de pago, la gratuita NO es compatible. Si tienes instalado el gratuito de WP User Avatar, prueba a desactivarlo y ves si ya te funcionan los avatares e imágnes de perfil bien en bbPress.
Si tienes BuddyPress ya no necesitas WP User Avatar, salvo que tengas el de pago de WP User Avatar, en cuyo caso podrías mantener los dos.
04/22/2017 a las 12:42 #1178VariosModeradorTengo el gratuito, he hecho lo que me has dicho, he desactivado el WP User Avatar y ahora sí funciona, ya aparecen bien los avatares en el bbPress y en los comentarios.
Ahora tengo otro problema, desde que desactivé el WP User Avatar, a los usuarios que no tienen imagen de perfil del BuddyPress les aparece un texto «Imagen de perfil de …» y no les aparece el avatar por defecto cuando no tienen avatar. Lo peor es que en el navegador Google Chrome aparece una imagen vacía estirada en los foros y queda horrorosa.
Por lo que he visto solo ocurre con los usuarios que no se han puesto imagen de perfil desde BuddyPress ¿hay alguna forma de importar los avatares de los usuarios de WP User Avatar al BuddyPress? algún plugin o alguna utilidad que haga esto.
Tengo miles de usuarios registrados y hacerlo uno a uno es imposible y no quiero adquirir la versión de pago de WP User Avatar.
04/22/2017 a las 13:12 #1179alonsojpdSuperadministradorPuedes usar este script en PHP, solo tienes que copiarlo a un fichero, llamarlo «avatar.php», subirlo por FTP a la carpeta raíz de tu sitio web, cambiar los usuarios, contraseñas y rutas por defecto por las
tuyas y luego subir el fichero y ejecutarlo escribiendo:
http://direccion_de_tu_web/avatar.php
Es MUY importante que sigas bien estos pasos:
0. Antes de nada, HACER COPIA DE SEGURIDAD de la web completa, tanto de la Base de Datos (el script solo lee y no toca la base de datos, pero siempre es recomendable hacer copia) y de los
ficheros de WordPress.
1. Copias el contenido siguiente a un fichero y lo llamas «avatar.php»:
PHP123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115<?php//Cambiar datos de conexión al servidor de MySQL y a la base de datos$servidor = "localhost";$usuario = "usuario_bd";$contrasena = "contraseña_usuario_bd";$baseDatos ="nombre_base_datos";//Carpeta donde se encuentran los avatares de BuddyPress//Si no es esta cambiar el valor por la que sea$carpetaAvatar = "wp-content/uploads/avatars/";//Cambiar esta URL por la del avatar que quieres que aparezca si//el usuario no tiene avatar en BuddyPress$urlAvatarSinAvatar = "http://xxx/wp-content/uploads/2017/04/no-avatar-150x93.jpg";$link = conectarBD();//Recorremos todos los usuarios y buscamos los posts con la URL del avatar de WP User Avatar en la BD$query = "select u.idfrom cb_users u;";$result = mysqli_query($link, $query);while($row = mysqli_fetch_array($result)){//Obtenemos la URL del avatar de WP User Avatar$query = "select p.guidfrom cb_posts pwhere p.id=(SELECT m.meta_valuefrom cb_usermeta mwhere m.user_id=" . $row['id'] . " and m.meta_key='cb_user_avatar')";$urlAvatar = "";$result2 = mysqli_query($link, $query);while($row2 = mysqli_fetch_array($result2)){$urlAvatar = $row2["guid"];if ($row2["guid"] != ""){//Añadir avatar solo si no existe ya en BuddyPressif (!is_dir($carpetaAvatar . $row["id"])){mkdir($carpetaAvatar . $row["id"]);echo $urlAvatar . " -- " . $carpetaAvatar . $row["id"] . "/" .$row["id"] . "-bpfull." . extensionFichero($urlAvatar) . "<br>";copy($urlAvatar, $carpetaAvatar . $row["id"] . "/" .$row["id"] . "-bpfull." . extensionFichero($urlAvatar));copy($urlAvatar, $carpetaAvatar . $row["id"] . "/" .$row["id"] . "-bpthumb." . extensionFichero($urlAvatar));}}}mysqli_free_result($result2);//Creamos la carpeta vacía del usuario si no existe avatar antiguo (WP User Avatar) ni nuevo (BuddyPress)if (!is_dir($carpetaAvatar . $row["id"])){mkdir($carpetaAvatar . $row["id"]);}}mysqli_free_result($result);//Cerramos la conexión a la base de datosmysqli_close($link);//Recorremos todas las carpetas de los avatares de Buddypress//en busca de carpetas vacías//Si están vacías añadiemos avatar de defecto//Si no tenía avatar en WP Avatar le asignamos el de defecto$urlAvatar = $urlAvatarSinAvatar;$carpetas = scandir($carpetaAvatar);foreach ($carpetas as $carpeta){$ficheros = scandir($carpetaAvatar . $carpeta);if (count($ficheros) < 3) //si no hay ficheros (solo .. y .){echo " -- sin avatar -- " . $carpetaAvatar . $carpeta . "<br>";copy($urlAvatar, $carpetaAvatar . $carpeta . "/" .$carpeta . "-bpfull." . extensionFichero($urlAvatar));copy($urlAvatar, $carpetaAvatar . $carpeta . "/" .$carpeta . "-bpthumb." . extensionFichero($urlAvatar));}}echo "<br><br><b>Fin del script, cerrada conexión con BD.</b>";//Conectar con el servidor MySQL y la base de datosfunction conectarBD(){global $servidor, $puerto, $usuario, $contrasena, $baseDatos, $tabla;if (!($link = mysqli_connect($servidor, $usuario, $contrasena))){echo "Error al conectar con el servidor de base de datos.<br/>";exit();}else{echo "Conexión a la base de datos satisfactoria.<br/>";}if (!mysqli_select_db($link, $baseDatos)){echo "Error al conectar al servidor de BD, no existe la base de datos (catálogo).<br/>";exit();}else{echo "Conexión a la base de datos $baseDatos satisfactoria.<br/>";}return $link;}//Obtener extensión de ficherofunction extensionFichero($ruta){return end(explode(".", $ruta));}?>2. Una vez copiado el contenido anterior en un fichero hay que cambiar los valores de conexión a la base de datos (servidor, base de datos, usuario y contraseña).
3. También hay que cambiar (si no es el correcto) la ubicación de los avatares de BuddyPress y la URL del avatar que se establecerá por defecto para aquellos usuarios que no tengan avatar, ni en BuddyPress,
ni en WP User Avatar.
4. Revisar el código por si ha cambiado algo con respecto a nuevas versiones.
5. Intentar ejecutar primero en una réplica de la web y no en la web real, para evitar problemas.
6. Una vez hecho TODO lo anterior, podremos subir el script PHP (avatar.php) a la raíz de nuestra web y ejecutarlo con un:
El Script tardará unos minutos en función del número de usuarios de la web de WordPress, NO cierres la ventana, no mostrará progreso, solo mostrará un listado de lo realizado una vez finalizado el script.
-
AutorEntradas
- Debes estar registrado para responder a este debate.