循环查看项目列表以确保不同的slug?

时间:2014-06-19 14:48:15

标签: php slug

我知道以前做过这件事。每当您在Wordpress中发布新的博客帖子/页面时,您都可以看到它的示例,并且标题与现有页面/帖子的标题相同。这是一个例子:

  • 一些页段塞
  • 一些页段塞-1
  • 一些页段塞-2

你将如何以编程方式(使用PHP)与提交给定列表的“some-page-slug”slug的人打交道。显然,你应该导致“some-page-slug-3”,但那段代码是什么样的?出于某种原因,这让我感到安慰。我在假设,希望我错了,你必须使用jQuery(或者vanilla js,无论如何),对吗?

2 个答案:

答案 0 :(得分:2)

这是一个可能的解决方案,如Mathew MacLeans在他的评论中提出的:

$slug = 'slug';
$slugs = array('slug', 'slug-1', 'slug-2', 'slug-5');
$result = $slug;

$i = 1;
while(in_array($result, $slugs)) {
    $result = $slug . '-' . $i;
    ++$i;
}

// prints 'slug-3'
print $result;

当然,您必须将in_array替换为检查slug是否存在的函数。

<强>演示

Try before buy

答案 1 :(得分:1)

只是一些伪代码让你前进,但我相信这是你应该采取的路线。

$postTitle = <WhateverTheTitleIs>;
$result = mysql_query("SELECT id FROM mytable WHERE title = '$postTitle'");
if(mysql_num_rows($result) == 0) {
     // title not found, submit to database
} else {
    // title exists
    $postTitle = $postTitle + 1;   
}

现在,显然这并不是100%正确的语法,但它应该指向你需要去的方向。 :)