Error fatal: Función post_exists() no definida
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?

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' );
}

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

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

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');
