Схоже, що $ post доступний лише для гачків, що виконуються в певний час. У мене є гачок "init", який повинен витягувати деякі дані з бази даних, використовуючи $ post-> ID.
Наразі єдиним моїм вирішенням було додати ще один фільтр на the_content, який використовує $ post для отримання потрібної мені інформації. На жаль, воно також перегукується з поверненим значенням на екрані і фактично не повертає його до функції, яка спочатку викликала фільтр.
Ось код, який витягує потрібні мені дані, але повторюється та не повертає значення:
add_filter('the_content', 'get_keyword');
function get_keyword()
{
global $post;
$keyword = get_post_meta( $post->ID, '_wpg_def_keyword', true );
return $keyword;
}
Хтось має якісь пропозиції щодо того, як отримати те, що мені потрібно, і повернути його до функції виклику для подальшого використання в плагіні?
EDIT: Щоб можливо зробити це більш зрозумілим, у мене є фільтр, що працює в init, який повинен мати можливість отримувати інформацію про поточний пост з БД. Для цього потрібно отримати доступ до $ post-> ID. Але це неможливо в рамках init, тож як я можу отримати потрібний мені результат?
Дякую,
Джонатан
РЕШЕНО:
Виявляється, відповідь полягала в тому, щоб просто використовувати url_to_postid таким чином:
$keyword = get_post_meta(
url_to_postid( "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] ),
'_wpg_def_keyword',
true
);
Відмінно працює навіть з init.
init
занадто рано,global $post;
щоб бути в області застосування. можливо, якщо ви опишете, що ви намагаєтеся досягти, це допоможе краще.