Respuestas de foro creadas

Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • Iniciador del debate streamingmenntun

    (@streamingmenntun)

    antes de leer tu respuesta solucione ese problema de la siguiente manera cargue un pluguin en la plataforma A la cual me permitía entrar sin problemas con el siguiente codigo que encontré:

    <?php
    /*
    Plugin Name: Duplicate Caps
    Plugin URI: 
    Description: Tiny plugin to duplicate capabilities in a setup where users (and user tables) are shared across more than one install
    Author: Mikk3lRo
    Version: 0.1
    Author URI: 
    */
    $dummy = new duplicate_caps();
    class duplicate_caps {
        function __construct() {
            add_action('updated_user_meta', array($this, 'update_prefixed_caps'), 10, 2);
            add_action('added_user_meta', array($this, 'update_prefixed_caps'), 10, 2);
            add_action('deleted_user_meta', array($this, 'update_prefixed_caps'), 10, 2);
        }
        function update_prefixed_caps($mid, $object_id) {
            /**
             * Note that $object_id contains the id of the user that was
             * just changed.
             * On a site with many users it would make sense to only
             * get and set information regarding the just-changed user
             * Currently this function corrects roles for all users
             * making sure pre-existing users are duplicated, and keeping
             * the table in sync.
             */
            global $wpdb;
            //Quick and dirty - get all *capabilities rows for all users
            $sql = "SELECT * FROM {$wpdb->usermeta} WHERE <code>meta_key</code> LIKE '%capabilities'";
            $results = $wpdb->get_results($sql) or die(mysql_error());
    
            //Will hold all prefixes (always include our own)
            $prefixes = array($wpdb->prefix);
    
            //Will grab the existing role for each prefix
            $user_roles = array();
    
            //Loop our results
            foreach ($results as $result) {
                //Make sure the meta_key looks right, and grab the prefix
                if (preg_match('#^(.*)capabilities$#', $result->meta_key, $matches)) {
                    $prefix = $matches[1];
    
                    // Collect prefixes
                    $prefixes[] = $prefix;
    
                    //Note the entire row for later use
                    $user_roles[$result->user_id][$prefix] = $result;
                }
            }
    
            //Make sure we only have one of each
            $prefixes = array_unique($prefixes);
    
            //Loop through the users we found
            foreach ($user_roles as $user_id => $existing_prefixes) {
                if (!isset($existing_prefixes[$wpdb->prefix])) {
                    //User was probably just deleted - all rows are deleted by
                    //wordpress though, so no cleanup for us :)
                } else {
                    //We want all prefixes to obey us (we just created or changed
                    //the user, so we want that to affect all sites)
                    $desired_role = $existing_prefixes[$wpdb->prefix]->meta_value;
    
                    //Loop through all prefixes
                    foreach ($prefixes as $prefix) {
                        //Data to be inserted / updated
                        $cap_data = array(
                            'user_id' => $user_id,
                            'meta_key' => $prefix . 'capabilities',
                            'meta_value' => $desired_role
                        );
    
                        //If the prefix doesn't exist for this user
                        if (!in_array($prefix, array_keys($existing_prefixes))) {
                            //Actually insert it (user was probably just created)
                            $wpdb->insert($wpdb->usermeta, $cap_data, array('%d', '%s', '%s'));
                        } else if ($desired_role !== $existing_prefixes[$prefix]->meta_value) {
                            //Update it if not already correct (user was probably just edited)
                            $cap_data['umeta_id'] = $existing_prefixes[$prefix]->umeta_id;
                            $wpdb->replace($wpdb->usermeta, $cap_data, array('%d', '%s', '%s', '%d'));
                        }
                    }
                }
            }
        }
    }

    luego cree un nuevo usuarios con rol de administrador en la plataforma a y con ese me permitió entrar a la plataforma b una vez que ingrese le cambie el rol a mi usuario como administrador el cual me lo mostraba en blanco lo que quiere decir que por alguna razón no sirvió duplicar las filas en user_meta, no fue la manera mas ortodoxa pero funciono… ahora bien me sale otro problema, cuando registro un nuevo usuario en la plataforma b e intento ingresar en la plataforma a me dice que la contraseña es incorrecta, es decir me registra el usuario pero tengo que pedir cambiar contraseña alguna idea del porque puede estar pasando esto? debo aclarar que una vez resuelto el problema de no poder ingresar como administrador cargue el mismo pluguin en la plataforma b

    Iniciador del debate streamingmenntun

    (@streamingmenntun)

    comento las lineas y efectivamente me deja ingresar sin problemas ambos usuarios administrativos son el mismo documentandome un poco mas lei que en la taba user_meta tenia que duplicar las filas (prefijo1)_capabilities y
    (prefijo1)_user_level y cambiar el prefijo1 por el prefijo2 enlos duplicados pero me continua dando el problema

    Iniciador del debate streamingmenntun

    (@streamingmenntun)

    El sitio A mantiene el prefijo wp_ el Sitio B agregue el prefijo go_

    los archivos de configuración son idénticos de hecho realiza un clon del sitio anterior y solo modifique el tema

    las lineas agregadas al archivo de configuración al segundo sitio fueron:

    $table_prefix = 'go_';

    sobre la linea

    /* That's all, stop editing! Happy blogging. */

    agregue

    define('CUSTOM_USER_TABLE', 'wp_users');
    define('CUSTOM_USER_META_TABLE', 'wp_usermeta');
Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)