如何删除内容开头的特定单词并将其添加到内容的末尾

时间:2019-09-03 作者:user168547

我想删除帖子文本中位于文本开头的特定字母(如:)之前的任何单词,并将该单词添加到文本末尾。

例如:

»原文

        Franky: This is a test.
»更改后的内容

        This is a test.
        Quote from: Franky

1 个回复
最合适的回答,由SO网友:Ted Stresen-Reuter 整理而成

给出这篇post\\u的内容:“Franky:这是一个测试。”

显示帖子时

然后,post\\u内容显示为:

“这是一个测试。
引用自:Franky”

有很多很多方法可以做到这一点。我想最好是通过the_content 但为了简单起见,在本例中,您通常会看到以下图像the_content() 在WordPress模板文件中。

$search_pattern = \'@^([^:]+):\\s*(.*)$@\';
$replace_pattern = \'$2<br>\' . "\\n" . \'Quote: $1\';
$new_post_content = preg_replace( $search_pattern, $replace_pattern, get_the_content() );

echo $new_post_content;

您应该通过WordPress筛选器运行此操作的原因是可能有其他筛选器作用于the_content() 这也会修改它(或者需要在过滤器之后修改它)。

此外,还需要调整精确的正则表达式。我给出了一个假设输入都在一行上的示例。如果有多行输入,则需要进行相应的调整。然而,如何编写正则表达式是另一个主题,所以如果您需要这方面的帮助,我将发布一个单独的问题。

最后,要将其添加到\\u内容过滤器中,应该是这样的:

add_filter( \'the_content\', function( $input ) {
    $search_pattern = \'@^([^:]+):\\s*(.*)$@\';
    $replace_pattern = \'$2<br>\' . "\\n" . \'Quote: $1\';
    return preg_replace( $search_pattern, $replace_pattern, $input );
}, 10, 2);
而且……如果您希望此修改支持本地化,您需要通过WordPress翻译功能运行“Quote from:”,但这也是一个单独的问题。

祝你好运

相关推荐

初学者问题:通过管理Web界面访问Functions.php以导入自定义帖子类型?

是否可以访问这些功能。php文件仅仅使用管理web界面?我正在尝试访问以前创建的(手动编码的)自定义帖子类型,我不得不跳过很多障碍,因为我无法访问函数中的代码。php文件。我已经浏览了很多帮助页面,但建议的步骤似乎总是涉及到函数。php文件(我无法访问)或使用插件中的导入/导出工具,该插件首先创建了自定义帖子类型(据我所知,没有使用任何插件)。这似乎是一个非常基本的问题,但我一辈子都想不出来。任何帮助都将不胜感激!