【发布时间】:2020-01-31 13:27:48
【问题描述】:
我正在尝试向 wordpress 网站添加新帖子。我使用直接插入查询到 mysql 数据库到 wp_posts 列。问题是 guid 列是空的,对于其他帖子,它有 url。如何使用查询为新记录生成 guid 列的 url?
我尝试使用 uuid(),但它创建的是 id,而不是 url。
【问题讨论】:
标签: mysql wordpress woocommerce
我正在尝试向 wordpress 网站添加新帖子。我使用直接插入查询到 mysql 数据库到 wp_posts 列。问题是 guid 列是空的,对于其他帖子,它有 url。如何使用查询为新记录生成 guid 列的 url?
我尝试使用 uuid(),但它创建的是 id,而不是 url。
【问题讨论】:
标签: mysql wordpress woocommerce
这不是一个好习惯。 Wordpress 具有创建/更新帖子的功能,可以为您处理这些问题,无需重新发明轮子。
阅读 wp_insert_post() 函数。您只需准备好帖子的内容并将其传递给函数即可。
这样,wordpress 将清理和验证数据以避免错误或重复的冲突。
此外,每次创建帖子时,通常都会设置运行例程(来自插件和主题)。如果您直接在数据库中创建,则不会触发这些例程。
【讨论】:
尽管它的名称,该列不包含 Paul Leach / RFC4122 意义上的 guid。它包含看起来像 URL 的唯一标识符。通常,它们与某种固定链接有关。但您不一定需要填充该列。
如果您将使用程序而不是交互方式创建帖子/页面/媒体/等,那么您至少必须了解 WordPress 的 wp_insert_post() 函数。您可以在任何 WordPress 安装的 php 部分中阅读其 source code,或 here。
大多数需要插入帖子的人都是通过插件来完成的。
【讨论】:
为了创建新帖子,通过插入查询将数据插入到 wordpress 帖子表中并不是一个好习惯。
使用下面的函数将数据插入到 wordpress 中,它会自动创建 guid 和其余所需的列。
$post_title='Sample wordpress post';
$post_content='Sample wordpress post';
$my_post = array(
'post_title' => wp_strip_all_tags($post_title),
'post_content' => $post_content,
'post_status' => 'publish',
'post_category' => array(a)
);
// Create a new post
$post_id = wp_insert_post($my_post);
如果您有任何其他格式的数据,请将其存储在自定义表中,从自定义表中获取数据并使用上述函数将每一行创建为 WordPress 帖子。
【讨论】: