Я пишу пользовательскую функцию выдержки из WordPress.
Первые абзацы моих сообщений начинаются различными, но предсказуемыми способами:
- Иногда первый «абзац» заголовок (h3, h4)
- Иногда это «подпись» ( Джон Смит )
- Иногда есть заголовок И подпись
- И иногда первый абзац - это фактический текст статьи.
Что я хочу сделать, так это игнорировать абзацы, содержащие заголовки или подстрочные знаки, и возвращать пользовательский отрывок из первого «правильного» абзаца.
Есть тысячи записей, поэтому мы не собираемся добавлять выдержки ручной работы в ближайшее время.
Я начал идти в следующем направлении, но я не могу полностью сосредоточиться на логике c, которую я бы использовал в этом сценарии. Кроме того, я чувствую, что, вероятно, есть лучший (GREP?) Способ сделать это.
Есть предложения?
function get_first_ctarticle_paragraph()
{
global $post;
$str = wpautop(get_the_content());
//split content to first paragraph and the rest
$paragraphs = explode('</p>', $str);
//extract the first paragraph
$first_paragraph = $paragraphs[0];
$second_paragraph = $paragraphs[1];
$third_paragraph = $paragraphs[2];
if ((strpos($first_paragraph, '<h', 0) === false) && (strpos($first_paragraph, 'By', 0) === false) && (strpos($second_paragraph, 'By', 0) === false)) {
echo wp_trim_words( $first_paragraph, 40, '...' );
} elseif ((strpos($first_paragraph, '<h', 0) === false) && (strpos($first_paragraph, 'By', 0) === false) && (strpos($second_paragraph, 'By', 0) === false)) {
// etc.
};
}