【发布时间】:2020-04-27 01:09:09
【问题描述】:
我正在编写一个自定义的 WordPress 摘录函数。
我的帖子的第一段以各种但可预测的方式开始:
- 有时第一个“段落”是标题(h3、h4)
- 有时是“署名”(作者:John Smith)
- 有时会有标题和署名
- 有时第一段是文章的实际文本。
我想要做的是忽略包含标题或署名的段落,并从第一个“正确”段落返回自定义摘录。
有成千上万的条目,所以我们不会很快添加手工制作的摘录。
我开始朝以下方向发展,但我无法完全理解我将在这种情况下使用的逻辑。另外,我觉得可能有更好的(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.
};
}
【问题讨论】:
标签: php regex wordpress function grep