0

我目前正在为房地产经纪人构建一个对象列表,我们将所有对象本地缓存在一个名为“objekt”的自定义帖子类型中,并且它具有永久链接重写“objekt”。

我们在服务器的根目录中有一个名为的文件,wp-fetch-items.php房地产经纪人应用程序会在系统中出现新对象时对其进行 ping 操作。这会导致“objekt”类型的所有帖子被删除,然后它会通过一个 XML 文件并将所有对象再次添加到系统中。

一切工作正常,但帖子在 URL 中不断得到 -2,即使这是第一次创建帖子,并且没有任何名称甚至远程相似。

例如,我使用wp_insert_post名称插入的对象152912获取152912-2.

我使用以下代码创建对象:

$insertedPost = wp_insert_post(array(
    'post_author' => 1,
    'post_type' => 'objekt',
    'ping_status' => 'closed',
    'post_status' => 'publish',
    'post_name' => $objectData['title'],
    'post_title' => $objectData['title']
), false);

在创建它们之前,我遍历每个类型为“objekt”的帖子并使用以下代码删除它们:

wp_delete_post(get_the_ID(), true);

我特别添加了 true 作为第二个参数,以从数据库中永久删除对象,并且我所做的所有搜索都证明它没有任何剩余。

我还尝试使用此代码在删除后刷新永久链接,但它无助于解决这种情况:

global $wp_rewrite;
$wp_rewrite->flush_rules();

你有没有遇到过这个问题,你知道如何解决吗?如果您知道可能导致此问题的原因,请回复!

在此先感谢,乔纳森

4

2 回答 2

1

Wordpress 对数字帖子名称有特殊处理。这是故意的,因为它假定 URL 中的数字 ID 是帖子的实际 ID。添加-2确保它被解释为字符串,例如帖子的名称。http://yoursite/?p=152912否则,如果此帖子 ID 不存在,它将尝试显示并导致 404。

到目前为止我发现的唯一解决方案:避免使用数字名称。

(我写帖子是因为内部一切都是帖子,甚至是页面和图像)

编辑:

我找到了引入这种行为的票

于 2013-02-01T12:15:56.997 回答
0

检查您是否还没有包含该固定链接的帖子。如果该帖子中已存在永久链接,WordPress 将附加-2到该永久链接。也检查你的垃圾。

于 2013-02-01T12:12:14.513 回答