Errore fatale: Chiamata a funzione non definita post_exists()
Sto utilizzando la funzione nella mia classe personalizzata mentre uso altre funzioni di WordPress al suo interno.
Non riesco a capire perché non trova la funzione mentre l'IDE con "go to declaration" mi punta al file wp-admin/includes/post.php.
Le funzioni dei file in wp-admin non sono disponibili globalmente?
I file nella directory wp-admin
vengono caricati solo quando sei nell'area di amministrazione... quando visualizzi pagine o articoli quelle funzioni non vengono caricate. In quel caso dovrai includere prima il file, quindi dovrai fare qualcosa come questo nella tua funzione:
if ( ! is_admin() ) {
require_once( ABSPATH . 'wp-admin/includes/post.php' );
}
La parte if ( ! is_admin() )
è importante perché WordPress include automaticamente il file quando is_admin()
è true
, quindi vuoi includerlo solo se is_admin()
è false
. Assicurati inoltre di includere questo snippet prima di provare a chiamare la funzione post_exists()
.
Se questo non funziona, prova con:
if ( ! function_exists( 'post_exists' ) ) {
require_once( ABSPATH . 'wp-admin/includes/post.php' );
}

Grazie :), non credo sia una buona idea includere tutte le funzioni definite lì per verificare l'esistenza di un post con lo stesso titolo e contenuto

Qual è un'alternativa per verificare l'esistenza di un post tramite titolo, senza richiedere post.php?

Potresti aver utilizzato l'hook sbagliato.
Ho avuto questo problema quando utilizzavo:
function my_create_pages() {
if ( !post_exists( "My Title" ) ) {
// Crea post
}
}
add_filter('init', 'my_create_pages');
La soluzione è stata utilizzare l'hook admin_init
:
function my_create_pages() {
if ( !post_exists( "My Title" ) ) {
// Crea post
}
}
add_filter('admin_init', 'my_create_pages');
