如何防止wp_INSERT_POST出现重复的插件?

时间:2012-04-11 作者:AlxVallejo

我有一个函数,可以在创建帖子时创建页面(以便构建父子关系树)。

我正在使用帖子的$标题创建页面,这也创建了一个重复的slug。有没有办法稍微改变slug以使其独特?我怎样才能保证新的slug不会干扰原来的帖子?

3 个回复
SO网友:chrisguitarguy

如果您使用wp_insert_post, 它应该为您计算一个唯一的post slug。如果您不使用wp_insert_post, 尝试使用wp_unique_post_slug. 如果这两个都不适合您,您可以简单地尝试附加-page 或新页面的post_name (插入)之前。

WordPress在应用程序级别对post段塞进行唯一性检查——它看起来没有唯一的索引wp_posts.post_name. 因此,例如,如果您在一个事务中同时创建两个帖子,那么唯一性检查将失败。也有可能您会创建某种竞争条件,即两个帖子同时插入,并且对两个slug的唯一性检查都会失败。

SO网友:Rutwick Gangurde

我想如果slug重复,WP会自动在末尾添加一个数字。

SO网友:Rarst

根据我的经验,要求通常是相反的——当WP顽固地拒绝生成时,实现相同的缓动。:)

简单地说,slug可能会在分级和非分级帖子类型之间重叠,但不会在它们之间单独重叠。因为在您的案例中,涉及post(非层次)和page(层次),所以WP很高兴地允许slug重用。

如果您想手动强制WP消除重复页面的slug,您最好的选择可能是强制重复检查失败并触发数字后缀逻辑。从外观上看wp_unique_post_slug() 可通过以下筛选器完成的源:

apply_filters( \'wp_unique_post_slug_is_bad_hierarchical_slug\', false, $slug, $post_type, $post_parent )

结束

相关推荐

author slug in the backend

嗨,谢谢你的阅读。我试着在后台抓住作者的鼻涕虫。get_the_author_meta( \'user_nicename\' ); 为空。我试图用谷歌搜索这个问题,但找不到关于如何处理后端的任何具体信息。任何提示都很好。我坚持写作以达到质量标准。很抱歉发送垃圾邮件,但这似乎是唯一的解决方案。叫它垃圾邮件,我叫它任何东西,但我不会抱怨,因为否则,什么愚蠢的文字会在这里结束,只是为了得到一点帮助。