首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果重复的帖子标题自动添加单词

如果重复的帖子标题自动添加单词
EN

WordPress Development用户
提问于 2019-02-06 18:53:27
回答 1查看 81关注 0票数 1

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

我想要代码自动添加一个随机的词,如果重复的帖子标题,如Post 2重复标题==>自动更改后2标题,如:“爱情故事二”。

如果用户上传到post 3,重复标题再次=>自动添加随机词在帖子标题:“爱情故事三”。

非常感谢

EN

回答 1

WordPress Development用户

回答已采纳

发布于 2019-02-07 01:10:50

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

正如您所看到的,您必须向$suffixes数组中添加更多的数字,才能使其计数得更远。或者,如果可用,可以使用NumberFormatter类。

代码语言:javascript
复制
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:的缺点是,每次它递增时都必须查询数据库。因此,要达到“五”,需要五个查询。如果您开始将其计数到较高的数目,您将开始注意到保存过程需要更长的时间。在这种情况下,查询以当前标题开头的所有帖子,然后解析它们以找到当前的编号将更有效。

票数 1
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/327876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档