Error fatal: Función post_exists() no definida

24 feb 2016, 14:45:34
Vistas: 16.1K
Votos: 4

Estoy usando la función en mi propia clase ya que estoy utilizando otras funciones de WordPress en ella.

No logro entender por qué no puede encontrar la función mientras que mi IDE "ir a declaración" me dirige al archivo wp-admin/includes/post.php

¿Las funciones de los archivos wp-admin no existen como globales?

5
Comentarios

Lo más probable es que estés intentando usarlo en el front end, lo que explicaría el error. Las funciones del back end no están disponibles en el front end. ¿Qué estás intentando lograr aquí? Como dije (en un comentario ahora eliminado), este es un problema de alcance.

Pieter Goosen Pieter Goosen
24 feb 2016 14:52:55

Estoy probando si mi propia publicación existe en WordPress, pensé que la función incorporada sería más apropiada para el trabajo

justnajm justnajm
24 feb 2016 15:03:34

¿Por qué no simplemente usar get_post()? Si devuelve la publicación, existe; si no, no existe. De lo contrario, copia la función post_exists a tu tema y cámbiale el nombre, luego podrás usarla en el front end

Pieter Goosen Pieter Goosen
24 feb 2016 15:06:36

¿Quiero verificar si ya existe una publicación con el título y contenido?

justnajm justnajm
24 feb 2016 15:16:46

Encuentro que la mejor solución es copiar la función post_exists en mi propia clase, gracias @PieterGoosen, aunque esta función también debería declararse a nivel global

justnajm justnajm
25 feb 2016 08:25:46
Todas las respuestas a la pregunta 2
3
19

Los archivos en wp-admin solo se cargan cuando estás en el área de administración... cuando estás viendo páginas o publicaciones, esas funciones no están cargadas. En ese caso, necesitarías incluir el archivo primero, por lo que deberías hacer algo como esto en tu función:

if ( ! is_admin() ) {
    require_once( ABSPATH . 'wp-admin/includes/post.php' );
}

La parte if ( ! is_admin() ) es importante porque WordPress incluye el archivo automáticamente cuando is_admin() es true, por lo que solo quieres incluirlo si is_admin() es false. También asegúrate de incluir este fragmento antes de intentar llamar a la función post_exists().

Si eso no funciona, entonces prueba esto:

if ( ! function_exists( 'post_exists' ) ) {
    require_once( ABSPATH . 'wp-admin/includes/post.php' );
}
25 feb 2016 01:11:30
Comentarios

Gracias :), no creo que sea una buena idea incluir todas las funciones definidas allí para verificar si existe una publicación con el mismo título y contenido

justnajm justnajm
25 feb 2016 08:30:05

¿Cuál es una alternativa para verificar si existe una publicación por título, sin requerir post.php?

Robert Andrews Robert Andrews
1 feb 2019 13:24:20

Tendrás que escribir tu propio código para ello, o usar funciones existentes del admin dentro de una llamada function_exists

justnajm justnajm
27 feb 2019 14:22:10
0

Puede que hayas usado el hook incorrecto.

Yo tuve este problema al usar:

function my_create_pages() {
    
    if ( !post_exists( "Mi Título" ) ) {
    
        // Crear entrada
    }
}
add_filter('init', 'my_create_pages');

La solución fue usar el hook admin_init:

function my_create_pages() {
    
    if ( !post_exists( "Mi Título" ) ) {
    
        // Crear entrada
    }
}
add_filter('admin_init', 'my_create_pages');
20 jul 2023 10:50:19