Здравствуйте.
Для получения необходимых данных из БД сделал запрос:
function get_events()
{
global $wpdb;
$events = $wpdb->get_results(
"
SELECT post_id, meta_value
FROM $wpdb->postmeta
WHERE meta_key = 'data-provedeniya'
"
);
return $events;
}
После чего полученные данные передаю в другую функцию, которая кодируе тв json формат для дальнейшей работы с этими данными.
function get_json_for_calendar($arr)
{
$data = '';
foreach ($arr as $item) {
$calendarEvent = get_the_term_list($item->post_id, 'calendars', '<div>Категория мероприятия «', ' • ', '»</div>');
$jsonData = json_encode($calendarEvent);
$timeElement = $item->meta_value;
$date = DateTime::createFromFormat('Ymd', $timeElement);
$data .= '{
"date": "' . $date->format('Y-m-d') . '",
"title": "' . get_the_title($item->post_id) . '",
"description": ' . $jsonData . ',
"url": "' . get_permalink($item->post_id) . '"
},';
}
$json = substr($data, 0, -1);
return $json;
}
Заметил, что удаленные (в корзину) посты или черновики попадают в общий список, чего быть не должно.
Мое предположение, что функция get_events(); передает в функцию get_json_for_calendar($arr) все ID постов, без разницы какой у них post_type.
Соответственно посты никак не фильтруются и в общий список попадают (get_the_title($item->post_id)) все опубликованные, удаленные записи, а так же записи с другими статусами (на утверждение, черновик и т.д.).
Не могу составить проверку, что бы исключить все записи, кроме publish. Помогите решить эту задачу.