Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

123
Vistas
Agregar meta de usuario desde Javascript

Necesito agregar algunos datos a la meta del usuario en mi sitio web. Para hacerlo, uso ajax para llamar a un archivo PHP en mi servidor, sin embargo, cuando se ejecuta el código, simplemente devuelve nulo en lugar de la clase de usuario. Aquí está el código JS:

 <script> jQuery.ajax({ type: "POST", url: 'https://mywebsite.com/wp-content/ajax/file.php', dataType: 'json', data: {}, success: function (obj, textstatus) { console.log(obj); } }); </script>

Y los contenidos de file.php son:

 <?php header('Content-Type: application/json'); global $current_user; ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); // 3 llines above are just to display the error if any get_currentuserinfo(); echo json_encode($current_user->ID); ?>

Cuando ejecuto esto, el error dice que Uncaught Error: Call to undefined function get_currentuserinfo() in...

Cuando elimino esta línea, la salida es simplemente null . No sé si estoy haciendo todo correctamente, pero siéntete libre de sugerir diferentes soluciones. No necesito que se devuelva la ID, pero la variable $current_user no debe estar vacía.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No hay muchas razones para incluir un archivo .php completamente separado para manejar las solicitudes de AJAX.

Qué sucede : debido a que está incluyendo su propio archivo .php personalizado, se incluye fuera del entorno de WordPress, por lo que no tiene acceso a las variables y funciones de WordPress.

Tienes dos opciones:

  1. Use los métodos, acciones y controladores integrados de AJAX

  2. "Incluir" WordPress en su archivo .php personalizado

Yo recomendaría el primer método. Es (casi) tan simple como usar elwp_ajax_{$action} y publicar la solicitud en admin-ajax.php en lugar de su archivo personalizado.

Tu JS se vería así:

 jQuery.post( ajax_object.ajax_url, {action: 'my_action'}, function( response ){ alert( 'Here is the response: ' + response ); } );

Y luego dentro de su archivo functions.php (o similar), ponga en cola y localice el JS:

 // Wherever you are enqueing this JS file, use `wp_localize_script` to pass variables to it wp_enqueue_script( 'your-script', $link_to_your_js, array('jquery') ); wp_localize_script( 'your-script', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );

y luego aún en su archivo functions.php o similar, maneje la solicitud:

 add_action( 'wp_ajax_my_action', 'my_action_function' ); my_action_function(){ $user_info = get_currentuserinfo(); wp_send_json( $user_info ); }

Alternativamente, usando el segundo método, puede incluir wp-load.php en su file.php , usando una de las muchas respuestas sobre cómo "incluir wp-load.php " en un archivo . Sin embargo, esto puede causar algunos problemas con la escalabilidad y el mantenimiento, por lo que para algo como esto, ¡recomiendo encarecidamente el primer método!

Una última nota rápida: usando wp_localize_script (como en el primer método) puede pasar la información del usuario actual (o cualquier cosa a la que WordPress tenga acceso, en realidad) directamente al script, por lo que ni siquiera necesita hacer una solicitud AJAX para eso:

 wp_localize_script( 'your-script', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'current_userinfo' => get_currentuserinfo() );

¡Hacer eso permitirá que el archivo JS your-script tenga acceso a current_userinfo.ID y todas las demás variables disponibles directamente!

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda