La Ruta Absoluta (ABSPATH) en WordPress no funciona

14 feb 2014, 07:25:17
Vistas: 40.9K
Votos: 3

Actualmente estoy trabajando en una pequeña tarea que almacena información de un plugin en la base de datos, pero tengo un problema para incluir el archivo que contiene las funciones para ejecutar la consulta.

Aquí está la línea que incluye el archivo:

require_once(ABSPATH . 'wp-admin/includes/upgrade.php');

pero cuando ejecuto el código obtengo lo siguiente:

Warning: require_once(ABSPATHwp-admin/includes/upgrade.php): failed to open stream: No such file or directory in /home/najam/dev/project1/wordpress/wp-admin/admin-insert.php on line 18

He buscado mucho pero no he podido encontrar nada útil o de ayuda.

EDICIÓN

Aquí está mi código:

global $wpdb;

$table_name = $wpdb->prefix . 'table_form';

$sql = "CREATE TABLE $table_name (
  id int(11) NOT NULL AUTO_INCREMENT,
  rows int(11) DEFAULT NULL,
  cols int(11) DEFAULT NULL,
  UNIQUE KEY id (id)
);";

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

¿Dónde está este código?

s_ha_dum s_ha_dum
14 feb 2014 07:32:15

Parece que ABSPATH no está definido. ¿Dónde lo estás usando?

Seamus Leahy Seamus Leahy
14 feb 2014 07:34:00

Probablemente olvidaste una barra diagonal al final de ABSPATH y antes de wp-admin/. Prueba esto: ABSPATH . '/wp-admin/. Y considera también esta pregunta de WP en StackOverflow.

Mayeenul Islam Mayeenul Islam
14 feb 2014 07:36:00

sin éxito.. :( con la barra diagonal final... @mayeenul

Najam-us-Saqib Najam-us-Saqib
14 feb 2014 07:37:17

¿Qué es el archivo /wp-admin/admin-insert.php? Esto no está en el núcleo. ¿Estás modificando el núcleo de WordPress?

Seamus Leahy Seamus Leahy
14 feb 2014 08:07:22

El archivo insert.php lo hice yo mismo, en realidad soy nuevo en WordPress, ¿quiero saber si hay algún error que esté cometiendo? En realidad quiero almacenar la información de un formulario de plugin en la base de datos.

Najam-us-Saqib Najam-us-Saqib
14 feb 2014 08:10:19

@Mayeenul Islam no, no se requiere una barra diagonal al final después de ABSPATH. La variable ABSPATH ya contiene una barra diagonal al final...

Shail Shail
14 jun 2014 14:10:54

Solo imprime la variable ABSPATH y comprueba qué devuelve para estar seguro...

Shail Shail
14 jun 2014 14:12:10

No deberías realizar adiciones ni cambios dentro de la carpeta wp-admin a menos que estés contribuyendo al núcleo de WordPress. Deberías crear un plugin (es fácil, un archivo PHP con un comentario en la parte superior dentro de la carpeta de plugins), colocar tu código ahí, y utilizar la API AJAX y el sistema de hooks

Tom J Nowell Tom J Nowell
15 ago 2014 04:05:49
Mostrar los 4 comentarios restantes
Todas las respuestas a la pregunta 5
1

Archivo insert.php que hice yo mismo, en realidad soy nuevo en WordPress, quiero saber si hay algún error que esté cometiendo. En realidad quiero almacenar información de un formulario de plugin en la base de datos.

Tu pregunta es muy escasa en detalles, pero sospecho que el error que estás cometiendo es cargar un archivo de tal manera que se carga fuera del contexto de WordPress, o de una forma en que solo partes de WordPress se cargan.

La falta de detalles en tu pregunta—la casi completa ausencia de contexto para el código—hace imposible proporcionar una respuesta sólida, pero me inclino a sugerir que necesitas ejecutar tu código a través de la API AJAX (incluso si no es estrictamente AJAX). Algo como esto: https://wordpress.stackexchange.com/a/108145/21376

Si quieres una mejor respuesta, debes redactar una mejor pregunta. Por favor, haz clic en el botón "editar" debajo de tu pregunta y agrega tantos detalles como puedas, pero manténlo organizado.

14 feb 2014 16:58:24
Comentarios

Me preocuparía bastante que se esté creando una tabla de base de datos dentro de una llamada AJAX, punto.

Tom J Nowell Tom J Nowell
15 ago 2014 04:04:08
0

Existe una útil función en WordPress que te ayuda cuando no quieres verificar si falta la "/" en tu ruta.

trailingslashit

Tu ejemplo debería escribirse de la manera recomendada:

require_once( trailingslashit( ABSPATH ) . 'wp-admin/includes/upgrade.php' );

Al usar esta función, nunca tendrás que poner "/" al frente de tu ruta "relativa", ya que esta función se asegura de que la "/" esté presente en caso de que falte.

Por eso hemos creado esta función en WordPress.

14 feb 2014 17:06:38
0

ABSPATH funcionará, necesitas incluir el archivo wp-load. include '../../../wp-load.php';

25 ago 2016 14:03:34
0

No deberías necesitar la / pero prueba con una barra al inicio de /wp-admin

require_once( ABSPATH . '/wp-admin/includes/upgrade.php' );

Pero ¿verificaste si existe el archivo /wp-admin/admin-insert.php?

¿Está definido ABSPATH? Agrega lo siguiente para verificarlo:

// ¿Está definido ABSPATH?
if ( !defined('ABSPATH') )
die('-1');

Además, ¿estás intentando ejecutar esto sin cargar WordPress? También podrías probar con site_url() y trabajar con eso.

14 feb 2014 08:26:40
0

ABSPATH ya debería incluir una barra diagonal al final. Necesitas incluir tu archivo de actualización desde el archivo principal del plugin. Quizás necesites engancharte a la acción 'plugins_loaded' o 'init' y luego llamar al método de actualización.

23 oct 2017 17:27:42