有两种方法可以编辑wp_posts
我知道的那个桌子。第一个是wp_update_post()
和wp_insert_post()
功能。这些是与其他任何函数一样使用的典型WP函数。您只需传递正确的参数。例如:
$my_post = array(
\'ID\' => $updatePostID, // User defined variable; the post id you want to update.
\'post_title\' => \'Update Title\',
\'post_content\' => \'Update Content\',
);
// Update the post into the database
$post_id = wp_update_post( $my_post, true ); // Returns 0 if no error; returns post id if there was an error.
// Check if table was updated without error. For debugging. Remove from your code if it all works, before publishing.
if (is_wp_error($post_id)) {
$errors = $post_id->get_error_messages();
foreach ($errors as $error) {
echo $error;
}
}
只需将带有预定义字段名的数组传递给函数,它们就会正确运行。update函数自然用于更新,insert函数创建新的表条目(行)。然而,有一个限制。这两个功能仅在WP预定义字段上运行。因此,如果表包含一些自定义字段,则必须使用
$wpdb
班
从WordPress更新mySQL表的另一种方法是使用$wpdb
直接初始化。这门课比wp_update_post()
和wp_insert_post()
功能。第一个区别是它可以编辑许多其他mySQL表,而不仅仅是wp_posts
桌子它还可以编辑非WP字段。例如:
global $wpdb; // This calls the use of the class. I actually do not think this is necessary, but I do it anyway.
$dbresult = $wpdb->update($wpdb->posts, // Returns 0 if no errors. Post ID if errors occurred.
// Notice posts instead of wp-posts. Prefixes are not necessary with this class.
[\'post_title\' => \'Update Title\',
\'post_content\' => \'Update Content\',
\'custom_field\' => $customField, ], // User defined table column and variable.
[\'ID\' => $updatePostID, ]); // User defined variable; the post id.
if (false === $dbresult) {
echo \'An error occurred while updating...\';
$errors = $post_id->get_error_messages();
}
我对这两个选项都不是很熟悉,但功能的宽度似乎有很大的不同,因此在使用其中一个选项之前,可能需要考虑一些因素。为此,我提出了一个问题:
What does wp_update_post() do that the $wpdb class does not? 一
reply 表示:
的缺点$wpdb
您确实需要了解SQL,并且需要意识到正常的数据清理和何时使用prepare()
还有哪些功能已经准备好了你的陈述,而这些几乎都不是缺点。这个$wpdb
类本质上比任何默认WordPress函数都更强大,因为假设您知道获取、修改或删除数据的正确SQL,那么您可以访问所有数据,无论是否自定义。
TL;DR $wpdb
更强大,但不那么友好和宽容。
这对我来说是有道理的。基本上,除非你知道自己在做什么或必须做什么,否则不要摆弄wpdb美元。