如果帖子标题重复,则自动添加单词

时间:2019-02-06 作者:Duy Hữu

我有两个帖子的标题:“爱情故事”。

如果帖子标题重复,我希望代码自动添加一个随机单词,如帖子2重复标题==>自动更改帖子2标题,如:“爱情故事2”。

如果用户在第三篇文章中添加了重复的标题=>自动在文章标题中添加随机单词,如:“爱情故事三”。

非常感谢

1 个回复
最合适的回答,由SO网友:Justin Waulters 整理而成

请试一试。我没有测试它,所以请告诉我它是否有任何错误。基本上,它会在保存之前检查标题,并运行循环检查,以查看是否可以通过该标题获取帖子。如果可以,它将添加一个新后缀并继续尝试。

如您所见,您必须在$suffixes 数组以允许它继续计数。或者,您可以使用NumberFormatter 类别(如果可用)。

add_filter( \'wp_insert_post_data\' , \'filter_post_title\' , \'99\', 2 );
function filter_post_title( $data , $postarr ) {
    if( !$postarr[\'ID\'] ) { // Publishing for the first time
        $suffixes = array( \'Two\', \'Three\', \'Four\' );
        $count = 0;
        $original_title = $data[\'post_title\'];
        $new_title = $original_title;
        while( get_page_by_title( $new_title, \'object\', \'post\' ) ) {
            $new_title = $original_title . " " . $suffixes[$count];
            $count++;
        }
        $data[\'post_title\'] = $new_title;
    }
    return $data;
}
您可以用更少的变量来编写它,但我觉得这种方式更具可读性。

Edit:这样做的缺点是每次递增时都必须查询数据库。因此,要获得“五个”,需要五个查询。如果您开始让它计数到很高的数字,您将开始注意到保存过程需要更长的时间。在这种情况下,查询所有以当前标题开头的帖子,然后对其进行解析以找到当前编号会更有效。

相关推荐

如何在最后一个“-”之后回显所有不带文本的_title()

我正在尝试做一些事情,但我有问题。。。我不会显示我的帖子列表,但我想从所有标题中删除最后“-”(破折号)之后的文本我的帖子列表:我的经历-这个男孩-第一天-遇见我的爱人-我不知道-第二天-我的第一次-奥乌-第三次-我想回报你:我的经历-这个男孩-第一天我的爱人-我不知道我的第一次我试过:<?php $stringx = get_the_title(); echo preg_replace(\'/-[^-]*$/\', \'\', $stringx); ?> 但是这个返回全文