logo-antonella-framework-blancologo-antonella-framework-blanco
  • Documentación
  • Soporte
  • Repositorio
  • Videotutoriales
  • Idioma: Español
    • Español Español
    • English English
logo-antonella-framework-blanco
logo-antonella-framework-blanco

Fatal error: Uncaught Error: Call to a member function get_page_permastruct() on null

Inicio Preguntas Fatal error: Uncaught Error: Call to a member function get_page_permastruct() on null
Soporte › Categoría: Questions › Fatal error: Uncaught Error: Call to a member function get_page_permastruct() on null
1 Votar Buena Votar Mala
David ha preguntado hace 4 años

Hola Carlos.
Tengo un formulario en la parte administrativa, una vez que recibo los datos del formulario via $_POST, necesito crear una página.
Para ello llamo a la función wp_insert_post($data) previamente compruebo si la página existe (sólo si no existe la creo).

// Config.php
public $post=[
‘gs_affiliate_tutellus_submit’ => __NAMESPACE__.’\Controllers\Admin::save’,
];

// Controllers\Admin.php
public static function save() {
$request = $_POST;
$page = get_posts([
‘name’ => $request[‘page’],
‘post_type’ => ‘page’,
‘post_status’ => ‘publish’]);

if (!$page) {
$slug = sanitize_title($request[‘page’]);

$data = [
‘post_title’ => $request[‘page’],
‘post_name’ => $slug,
‘post_type’ => ‘page’,
‘post_status’ => ‘publish’];

$id = wp_insert_post($data);
if (is_wp_error($id)) {
$errors = $id->get_error_messages();
foreach ($errors as $error) {
echo $error . «<br />»;
}
}
…
}
update_option(…); // save data
}

La pagina la crea correctamente pero me devuelve el siguiente error.
Fatal error: Uncaught Error: Call to a member function get_page_permastruct() on null in E:\backup\projects\xampp\laragon\wordpress\wp-includes\link-template.php:373 Stack trace: #0 E:\backup\projects\xampp\laragon\wordpress\wp-includes\link-template.php(335): _get_page_link(Object(WP_Post), false, false) #1 E:\backup\projects\xampp\laragon\wordpress\wp-includes\link-template.php(146): get_page_link(Object(WP_Post), false, false) #2 E:\backup\projects\xampp\laragon\wordpress\wp-includes\post.php(3800): get_permalink(Object(WP_Post)) #3 E:\backup\projects\xampp\laragon\wordpress\wp-content\plugins\gs-afillate\src\Controllers\Admin.php(228): wp_insert_post(Array) #4 [internal function]: GSAFILLATE\Controllers\Admin::save(‘3d329a45e9’, ‘https://affilia…&#8217;, ‘313158ca53ac47a…’, ‘eyJhbGciOiJIUzI…’, ‘Prueba’, ‘EUR’, ‘tecnologia’, ‘desarrollo-web’, ’12’, ‘Guardar cambios’) #5 E:\backup\projects\xampp\laragon\wordpress\wp-content\plugins\gs-afillate\src\Request.php(44): call_user_func_array(‘GSAFILLATE\\Cont…’, Array) #6 E: in E:\backup\projects\xampp\laragon\wordpress\wp-includes\link-template.php on line 373
La verdad estoy perdido, no sé si estoy haciendo algo mal
Gracias!

Etiquetas de la pregunta: wp_insert_post
1 respuestas
1 Votar Buena Votar Mala
Carlos Herrera Staff ha respondido hace 3 años

Hola David y Gracias por usar Antonella Framework. 
 
Este caso es muy similar a este
La solución es poniendo en la primera linea de la función save() esto:


require_once( ABSPATH . ‘wp-includes/pluggable.php’ );

Dime si te funciona. Saludos

Tu respuesta

Powered by Carlos Herrera

Insertar/editar un enlace

Introduce la URL de destino

O enlaza a contenido ya existente

    No se ha especificado ningún término de búsqueda. Mostrando los elementos recientes. Busca o utiliza las teclas de flecha arriba y abajo para seleccionar un elemento.