Fatal error: Call to undefined function post_exists() - решение ошибки
Я использую функцию в своем собственном классе, так как использую другие функции WordPress в нем.
Я не могу понять, почему она не может найти функцию, хотя IDE "перейти к объявлению" указывает на файл wp-admin/includes/post.php
Функции из файлов wp-admin не являются глобальными.
Файлы в директории wp-admin
загружаются только при работе в админ-панели... когда вы просматриваете страницы или записи, эти функции не загружаются. В таком случае вам нужно сначала подключить файл, поэтому в вашей функции следует сделать что-то вроде этого:
if ( ! is_admin() ) {
require_once( ABSPATH . 'wp-admin/includes/post.php' );
}
Часть if ( ! is_admin() )
важна, потому что WordPress автоматически включает этот файл, когда is_admin()
возвращает true
, поэтому подключать его нужно только если is_admin()
возвращает false
. Также убедитесь, что добавили этот код до попытки вызвать функцию post_exists()
.
Если это не работает, попробуйте следующее:
if ( ! function_exists( 'post_exists' ) ) {
require_once( ABSPATH . 'wp-admin/includes/post.php' );
}

Спасибо :), я не думаю, что хорошая идея включать все функции, определенные там, для проверки существования поста с таким же заголовком и содержимым

Какая есть альтернатива для проверки существования поста по заголовку, без необходимости подключать post.php?

Возможно, вы использовали неправильный хук.
Я столкнулся с этой проблемой при использовании:
function my_create_pages() {
if ( !post_exists( "Мой заголовок" ) ) {
// Создать запись
}
}
add_filter('init', 'my_create_pages');
Решение заключалось в использовании хука admin_init
:
function my_create_pages() {
if ( !post_exists( "Мой заголовок" ) ) {
// Создать запись
}
}
add_filter('admin_init', 'my_create_pages');
