• Tengo un plugin con este sencillo código que es llamado desde una función .click() de jQuery, pero no funcionan las funciones de WordPress. Aparecen como «Fatal error: Call to undefined funtion get_user_meta() «

    <?php
    /*
    Plugin Name: Control de descargas
    Plugin URI: https://github.com/jjlazo79/wp_plugin_template
    Description: A simple wordpress plugin template
    Version: 1.0
    Author: Jose Lazo
    Author URI: http://www.joselazo.es
    License: GPL2
    */
    // Controlar las descargas si recibimos parámetros por post
    if ( isset( $_POST["descarga"]) && $_POST["descarga"] !== '' ) {
      global $wpdb;
      //Definimos variables
      $user_id    = $_POST["usuario"];
      $descarga   = $_POST["descarga"];
      $meta_key   = '_descargas_comunicaciones';
      $prev_value = get_user_meta( $user_id, $meta_key );
    
      if ( isset( $prev_value ) && $prev_value !== '' ) {
        //Comprobamos si ya está en el array de descargas
        if ( !in_array( $descarga, $prev_value ) ) {
          //Si no está, la añadimos al final del array actual de descargas
          array_push( $prev_value, $descarga );
          //Almacenamos el nuevo array en otra variable
          $descarga_actualizada = $prev_value;
          //Actualizamos el user_meta
          update_user_meta( $user_id, $meta_key, $descarga_actualizada, $prev_value );
        } else {
          echo "Esta comunicación ya la ha descargado anteriormente";
        }
      } else {
        // Si no existen datos previos de descarga, añadimos el user_meta
        add_user_meta( $user_id, $meta_key, $descarga, true );
      }
    
        echo "Su usuario es el número " . $user_id . ". ";
        echo "Se ha descargado la comunicación número " . $descarga;
    }
     ?>

    La llamada AJAX es la siguiente:

    jQuery('a.pdf').click(function() {
            var id = jQuery(this).attr('id');
            var usuario = jQuery('#usuario').html();
            //alert("Descarga: "+id+" - Usuario: "+user);
    
            // Lanzamos los datos con la descarga al PHP
            jQuery.ajax({
                url : '../../wp-content/themes/wplms/procesar_descargas.php',
                dataType: 'html',
                data : {descarga: id, usuario: usuario },
                type: 'POST'
            }).done( function( data ) {
                    // Estamos utilizando el método .done(), pero debo apuntar que jQuery nos provee de varios métodos callback para distintos fines
                    // En data además viene la respuesta del PHP
                    alert( data );
                });
        });

    ¿Por qué no funcionan las funciones de WordPress?

  • El debate ‘Funciones de WordPress undefined en un plugin’ está cerrado a nuevas respuestas.