Я пишу плагин для Wordpress и мне нужно просмотреть несколько постов, извлечь из них данные (по большей части заголовок, постоянная ссылка и контент) и применить к ним обработку, не отображая их на странице.
На что я смотрел:
Я посмотрел на get_posts () для получения сообщений, а затем
getting title via the_title(),
content via the_content(),
and permalink via the_permalink()
Имейте в виду, что мне нужны эти данные после того, как все фильтры уже были применены, так что я получаю точные данные, которые будут отображаться пользователю. Кажется, что каждая из перечисленных функций применяет все необходимые фильтры и уже выполняет некоторую постобработку, и это прекрасно.
Проблема:
Проблема в том, что все эти функции, по крайней мере в WP 2.7.1 (последняя выпущенная версия прямо сейчас), по умолчанию просто отражают все и даже не возвращают ничего обратно. the_title () на самом деле поддерживает флаг, который говорит, что не печатать и не возвращать, как это
the_title(null, null, false)
Другие 2, однако, не имеют таких флагов, и такое несоответствие меня шокирует.
Я посмотрел на то, что делает каждая из функций the_ (), и попытался извлечь этот код, чтобы я мог вызывать его без отображения данных (это взлом в моей книге, так как поведение функций the_ () может измениться в любое время). Это работало для постоянной ссылки, но по какой-то причине get_the_content () возвращает NULL. В любом случае, должен быть лучший путь.
Итак, каков наилучший способ извлечь эти значения без их печати?
Пример кода
global $post;
$posts = get_posts(array('numberposts' => $limit));
foreach($posts as $post){
$title = the_title(null, null, false); // the_title() actually supports a "do not print" flag
$permalink = apply_filters('the_permalink', get_permalink()); // thanks, WP, for being so consistent in your functions - the_permalink() just prints /s
$content = apply_filters('the_content', get_the_content()); // this doesn't even work - get_the_content() returns NULL for me
print "<a href='$permalink'>$title</a><br>";
print htmlentities($content, ENT_COMPAT, "UTF-8"). "<br>";
}
P.S. Я также рассмотрел Каков наилучший метод для создания ваших собственных циклов Wordpress? , и хотя он имеет дело с и без того очевидным способом циклического перемещения по сообщениям, решение просто печатает эти данные.
ОБНОВЛЕНИЕ: Я открыл тикет с Wordpress по этому поводу. http://core.trac.wordpress.org/ticket/9868