Problemas ao ativar hook de banco de dados ao incluir arquivos

  • Autor Autor adruiz
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
adruiz

adruiz

Gamma
Verificación en dos pasos activada
Intentaré resumir mi problema lo máximo posible.

Estoy creando un plugin para WP con el cual creo una tabla personalizada en la base de datos principal de WP. El código vendría a ser uno como este:

PHP:
function create_prueba_database() {
        global $wpdb;
        $charset_collate = $wpdb->get_charset_collate();

        $table_name = $wpdb->prefix .'db_bd_prueba';
        $sql = "CREATE TABLE $table_name(
            id INTEGER NOT NULL AUTO_INCREMENT,
            name TEXT NOT NULL,
            url TEXT NOT NULL,
            price TEXT NOT NULL,
            PRIMARY KEY (id)
        ) $charset_collate;";

        require_once(ABSPATH .'wp-admin/includes/upgrade.php');
        dbDelta($sql);
    }

    register_activation_hook(__FILE__, 'create_prueba_database');

Mi plugin principalmente tiene un archivo plugin.php en la raíz del plugin con los datos del mismo, mientras que el código que os muestro se encuentra en otro dentro de una carpeta, /api/database.php.

¿Qué ocurre? Que el código en cuestión solo funciona cuando lo inserto a pelo en el fichero plugin.php, si hago un include o un require tanto normal como en su variable _once, pese a que la ruta es correcta (y me he asegurado de ello) nunca lo pilla, o más bien dicho, no hace nada. No sé si el problema podría ser el ABSPATH o el register_activation_hook, pero me interesa que este código se llame desde donde toca y no tener que guarrear demasiado con la estructura del plugin.

Ahora mismo, el script se enlaza así:
PHP:
include plugin_dir_path( __FILE__ ) ."api/database.php";

No creo que guarde mucha relación, pero cada vez que activo/desactivo el plugin me da un error de que se han generado X caracteres de salida inesperados.

¿Alguna sugerencia? Gracias de antemano 👍
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Creo que register_activation_hook tiene que estar si o si en el archivo principal.
 
Te recomiendo que uses class para no tener conflictos con otras funciones.
 
Toda la razón @YeltsinReyes, trasteando vi que funcionaba como debía con el hook en el archivo principal, así que para no esmerarme demasiado al final he tirado de esa solución.

Muchas gracias 👍
 
Voltar
Topo