我有两个重复的帖子标题:“爱情故事”。
我想要代码自动添加一个随机的词,如果重复的帖子标题,如Post 2重复标题==>自动更改后2标题,如:“爱情故事二”。
如果用户上传到post 3,重复标题再次=>自动添加随机词在帖子标题:“爱情故事三”。
非常感谢
发布于 2019-02-07 01:10:50
请试试看。我没有测试它,所以如果它有任何错误请告诉我。基本上,它会在保存之前检查标题,并运行一个循环检查,看看它是否可以通过该标题得到一个帖子。如果可以,它将添加一个新后缀并继续尝试。
正如您所看到的,您必须向$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:的缺点是,每次它递增时都必须查询数据库。因此,要达到“五”,需要五个查询。如果您开始将其计数到较高的数目,您将开始注意到保存过程需要更长的时间。在这种情况下,查询以当前标题开头的所有帖子,然后解析它们以找到当前的编号将更有效。
https://wordpress.stackexchange.com/questions/327876
复制相似问题