WP_INSERT_POST违反重写规则

时间:2011-04-28 作者:marpa

我正在使用wp_insert_post 以编程方式向网站添加内容。这适用于帖子、类别和标签,但不适用于页面。

当我尝试添加页面(即post\\u type=page的post)时,重写规则无法正确重新生成(或者在wp_insert_post). 具体而言,与类别和标记URL相关的规则会丢失,如下所示:

[category/(.+?)/feed/(feed|rdf|rss|rss2|atom)/?$] => index.php?category_name=$matches[1]&feed=$matches[2]
[category/(.+?)/(feed|rdf|rss|rss2|atom)/?$] => index.php?category_name=$matches[1]&feed=$matches[2]
[category/(.+?)/page/?([0-9]{1,})/?$] => index.php?category_name=$matches[1]&paged=$matches[2]
[category/(.+?)/?$] => index.php?category_name=$matches[1]
[tag/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$] => index.php?tag=$matches[1]&feed=$matches[2]
[tag/([^/]+)/(feed|rdf|rss|rss2|atom)/?$] => index.php?tag=$matches[1]&feed=$matches[2]
。。。等

这意味着标记和类别存档URL会被破坏。只需单击设置>永久链接即可修复它们。已尝试使用修复$wp_rewrite->flush_rules() 紧接着wp_insert_post 但这并没有解决问题。。。

2 个回复
SO网友:Matthew Boynes

如果没有看到更多的代码,很难说您的问题是什么,但我敢打赌,如果您在插入帖子后添加以下内容,您的问题将得到解决:

do_action(\'save_post\', $post_ID, $post);
WordPress使用此操作刷新缓存、重写规则等。当然,请确保为$post\\u ID和$post使用适当的变量。为了更好地衡量,您还应添加:

do_action(\'wp_insert_post\', $post_ID, $post);
这样,任何使用这个钩子的插件、主题等都会知道自己在做什么。

干杯~

SO网友:WraithKenny

我也遇到了同样的问题。我在ajax回调中使用了wp\\u insert\\u post。post\\u name字段被清空。我最终追溯到不久之后,我给wp\\U publish\\u post打了电话。在插入之前,我注释掉了publish并设置了post\\u状态,这一切都做得更好。

结束