Ver Mensaje Individual
  #7 (permalink)  
Antiguo 11/11/2014, 09:51
Avatar de rogertm
rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 9 meses
Puntos: 638
De acuerdo Respuesta: Recorrer un array dentro de un foreach

Bueno, debo agradecer, literalmente me han resuelto el problema...

Finalmente el código quedó así:
Código PHP:
Ver original
  1. $notes = array(
  2.     'user_1'    => array(
  3.         'user'        => 1,
  4.         'status'    => 'pending',
  5.     ),
  6.     'user_22'    => array(
  7.         'user'        => 22,
  8.         'status'    => 'pending',
  9.     ),
  10.     'user_13'    => array(
  11.         'user'        => 13,
  12.         'status'    => 'pending',
  13.     ),
  14.     'user_4'    => array(
  15.         'user'        => 4,
  16.         'status'    => 'pending',
  17.     ),
  18.     'user_512'    => array(
  19.         'user'        => 512,
  20.         'status'    => 'pending',
  21.     ),
  22. );
  23.  
  24. $status         = ( isset( $_REQUEST['status'] ) ) ? $_REQUEST['status'] : null;
  25. $updated_users     = array();
  26. foreach ( $notes as $key => $value ) :
  27.     for ($i = 0; $i < count($_REQUEST['user']); $i++) :
  28.         if ( $value['user'] == $_REQUEST['user'][$i] ) :
  29.             if ( $status == 'approved' || $status == 'pending' ) :
  30.                 $update_user = array(
  31.                     $key     => array(
  32.                         'user'        => $_REQUEST['user'][$i],
  33.                         'status'    => $status,
  34.                     ),
  35.                 );
  36.             elseif ( $status == 'disapprove' ) :
  37.                 $update_user = array();
  38.             endif;
  39.             break;
  40.         else :
  41.             $update_user = array(
  42.                 $key    => array(
  43.                     'user'        => $value['user'],
  44.                     'status'    => $value['status'],
  45.                 ),
  46.             );
  47.         endif;
  48.     endfor;
  49.         $updated_users = array_merge( $updated_users, array_slice( $update_user, -1 ) );
  50. endforeach;
Cambié la función sizeof() por count() por una cuestión pura de manía, y cambié el break al final de la sentencia if... pues si el estado es disapprove debo eliminar el usuario del registro en la BD

Para ampliar un poquito, y matar la curiocidad de quien la padezca, cuando me pasan este tipo de cosas trabajando con WP, trato de simplificar el código y lo trabajo en un archivo php simple y sato, que es lo que he mostrado aquí, pero también les traigo la función original, por si hace algún bien a alguien
Código PHP:
Ver original
  1. function humi_mentor_update_multi_supported_users(){
  2.     $status            = ( isset( $_REQUEST['status'] ) ) ? $_REQUEST['status'] : null;
  3.     $current_users    = get_user_meta( get_current_user_id(), 'humi_mentor_supported_users', true );
  4.     $updated_users    = array();
  5.  
  6.     // Check for multi user update
  7.     $multi_nonce    = ( isset( $_REQUEST['update_bulk_users_field'] ) ) ? $_REQUEST['update_bulk_users_field'] : null;
  8.     if ( ! wp_verify_nonce( $multi_nonce, 'update_bulk_users_attr' ) ) return;
  9.  
  10.     if ( wp_verify_nonce( $multi_nonce, 'update_bulk_users_attr' ) ) :
  11.         // Check if there is something to do
  12.         if ( $status == 'null' ) :
  13.             $redirect = apply_filters( 'humi_mentor_update_supported_users_fail', add_query_arg( array( 'update-multi-user' => 'false' ), get_permalink() ) );
  14.             wp_safe_redirect( $redirect );
  15.             exit();
  16.         endif;
  17.         foreach ( $current_users as $key => $value ) :
  18.             for ( $i = 0; $i < count( $_REQUEST['user'] ); $i++ ) :
  19.                 if ( $value['user'] == $_REQUEST['user'][$i] ) :
  20.                     if ( $status == 'approved' || $status == 'pending' ) :
  21.                         $update_user = array(
  22.                             $key     => array(
  23.                                 'user'        => $_REQUEST['user'][$i],
  24.                                 'status'    => $status,
  25.                             ),
  26.                         );
  27.                     elseif ( $status == 'disapprove' ) :
  28.                         $update_user = array();
  29.                         delete_user_meta( $value['user'], 'humi_user_mentor' );
  30.                     endif;
  31.                     break;
  32.                 else :
  33.                     $update_user = array(
  34.                         $key    => array(
  35.                             'user'        => $value['user'],
  36.                             'status'    => $value['status'],
  37.                         ),
  38.                     );
  39.                 endif;
  40.             endfor;
  41.             $updated_users = array_merge( $updated_users, array_slice( $update_user, -1 ) );
  42.         endforeach;
  43.         update_user_meta( get_current_user_id(), 'humi_mentor_supported_users', $updated_users );
  44.  
  45.         $redirect = apply_filters( 'humi_mentor_update_supported_users_success', add_query_arg( array( 'update-multi-user' => 'true' ), get_permalink() ) );
  46.         wp_safe_redirect( $redirect );
  47.         exit();
  48.     endif;
  49. }
  50. add_action( 'template_redirect', 'humi_mentor_update_multi_supported_users' );

Gracias nuevamente por la ayuda y la prontitud...
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose