Eroare fatală: Call to undefined function post_exists() - Soluții și explicații
Folosesc funcția în propria mea clasă, așa cum folosesc și alte funcții WordPress în ea.
Nu înțeleg de ce nu poate găsi funcția, în timp ce IDE-ul "go to declaration" mă direcționează către fișierul wp-admin/includes/post.php
Funcțiile din fișierele wp-admin nu sunt disponibile global?
Fișierele din wp-admin
sunt încărcate doar atunci când vă aflați în zona de administrare... când vizualizați pagini sau articole, acele funcții nu sunt încărcate. În acest caz, va trebui să includeți fișierul mai întâi, așa că ar trebui să faceți ceva de genul acesta în funcția dvs.:
if ( ! is_admin() ) {
require_once( ABSPATH . 'wp-admin/includes/post.php' );
}
Partea if ( ! is_admin() )
este importantă deoarece WordPress include fișierul automat atunci când is_admin()
este true
, așa că doriți să-l includeți doar dacă is_admin()
este false
. De asemenea, asigurați-vă că includeți acest fragment înainte de a încerca să apelați funcția post_exists()
.
Dacă acest lucru nu funcționează, încercați această variantă:
if ( ! function_exists( 'post_exists' ) ) {
require_once( ABSPATH . 'wp-admin/includes/post.php' );
}

Mulțumesc :), nu cred că este o idee bună să incluzi toate funcțiile definite acolo pentru a verifica dacă există un post cu același titlu și conținut

Care este o alternativă pentru a verifica dacă există un post după titlu, fără a fi nevoie de post.php?

Posibil să fi folosit cârligul (hook) greșit.
Am avut această problemă când am folosit:
function my_create_pages() {
if ( !post_exists( "My Title" ) ) {
// Creează post
}
}
add_filter('init', 'my_create_pages');
Soluția a fost să folosesc cârligul admin_init
:
function my_create_pages() {
if ( !post_exists( "My Title" ) ) {
// Creează post
}
}
add_filter('admin_init', 'my_create_pages');
