Absolute Path (ABSPATH) en WordPress no funciona
On noviembre 30, 2020 by adminActualmente estoy trabajando en una pequeña tarea que almacena la información de un complemento en la base de datos, pero tengo problemas con respecto a incluir el archivo que tiene las funciones para ejecutar la consulta.
Aquí está la línea que incluye el archivo:
require_once(ABSPATH . "wp-admin/includes/upgrade.php");
pero obtuve lo siguiente cuando ejecuté el código:
Advertencia:
require_once(ABSPATHwp-admin/includes/upgrade.php)
: no se pudo abrir la transmisión: no existe ese archivo o directorio en/home/najam/dev/project1/wordpress/wp-admin/admin-insert.php
en línea 18
He buscado mucho pero no puedo encontrar algo útil o útil.
EDIT
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 );`
Comentarios
Respuesta
insert.php
archivo que hice yo mismo, en realidad soy nuevo en wordpress, quiero que haya algún error que esté cometiendo? En realidad, quiero almacenar la información de un formulario de complemento en la base de datos.
Su pregunta es muy ligera en los detalles, pero sospecho que el error que está cometiendo es cargar un archivo de tal manera que se cargue fuera del contexto de WordPress, o de tal manera que solo se carguen partes de WordPress.
La falta de detalles en su pregunta, la casi total falta de contexto para el código, hace que sea imposible proporcionar una respuesta sólida, pero me inclino a sugerir que necesita ejecutar su código a través del API AJAX (incluso si no es estrictamente AJAX). Algo como esto: https://wordpress.stackexchange.com/a/108145/21376
Si desea una mejor respuesta, debes escribir una pregunta mejor. Haga clic en el botón «editar» debajo de su pregunta y agregue todos los detalles que pueda, pero manténgalo organizado.
Comentarios
- I ' Estaría bastante preocupado de que se esté creando una tabla de base de datos dentro de una llamada AJAX fullstop
Respuesta
hay una función de WordPress agradable que le ayuda en cualquier momento que no quiera comprobar si falta «/» en su ruta.
trailingslashit
su ejemplo debe estar escrito de la forma recomendada:
require_once( trailingslashit( ABSPATH ) . "wp-admin/includes/upgrade.php" );
utilizando esta función, nunca tienes que poner «/» delante de tu ruta «relativa», ya que esta función asegura que «/» estará en caso de que falte.
Es por eso que hemos creado esa función en WordPress.
Respuesta
ABSPATH
funcionará, debe incluir el archivo wp-load. include "../../../wp-load.php";
Responder
Deberías no es necesario el / pero pruebe con una barra al inicio del / wp-admin
require_once( ABSPATH . "/wp-admin/includes/upgrade.php" );
Pero, ¿comprobó si / wp-admin / admin-insert. ¿Existe el archivo php?
¿Está definido ABSPATH? Agregue lo siguiente para verificar:
// Is ABSPATH defined? if ( !defined("ABSPATH") ) die("-1");
aña Además, ¿está intentando ejecutar esto sin cargar WP? Además, puede probar site_url () y trabajar con él.
Respuesta
ABSPATH ya debería contener una barra al final. Debe incluir su archivo de actualización del archivo del complemento principal. Tal vez necesite conectarse a la acción «plugins_loaded» o «init» y luego llamar al método de actualización.
ABSPATH
no parece estar definido. ¿Dónde lo estás usando?ABSPATH
y antes dewp-admin/
. Pruebe esto:ABSPATH . '/wp-admin/
. Y considere esta pregunta WP de StackOverflow también./wp-admin/admin-insert.php
? Esto no está en el núcleo. ¿Está modificando el núcleo de WordPress?