ADD_POST_META存储的实际数据在哪里

时间:2016-03-31 作者:Eralp Sahin

我对WordPress API很陌生,顺便说一句,我有一个小项目,在每个帖子的末尾添加一个like按钮,按下它会让用户喜欢帖子,按钮变为不喜欢,再次按下会让用户不喜欢帖子。

在不了解WordPress API的情况下,我计划在wpdb中为我的插件创建一个表,用于存储帖子id和用户id。插件将通过查询表知道用户是否已经喜欢该帖子。但在互联网上,我发现了很多类似按钮的示例,它们不是创建自定义表,而是使用update\\u post\\u meta,如果我理解正确,update\\u post\\u meta不会更改数据库中的任何表或插入新行。因为我尝试了一些使用update\\u post\\u meta的插件,在喜欢了一篇文章之后,我的wp\\u posts和wp\\u posttea表根本没有改变。

我的问题是post\\u meta存储在哪里,如果我这样做,wordpress在哪里存储新的自定义字段“like\\u count”;

update_post_meta($post_id, \'like_count\',1);

2 个回复
最合适的回答,由SO网友:Arpita Hunka 整理而成

是的,我们可以使用WordPress中的现有表来存储值
Post meta字段存储在{$wpdb->prefix}_postmeta 表格(取决于表格前缀;wp_postmeta 默认情况下)。如果元键"like_count" 已与post ID一起出现在表中,然后update_post_meta() 将更新此项,否则此函数将使用此键插入新行。

有关更多参考信息,请查看:https://codex.wordpress.org/Function_Reference/update_post_meta

SO网友:Luis Alberto Gonzalez Noguera

post meta(也称为自定义字段)帮助我们将更多内容与帖子关联。这个内容可以是任何你想与你的帖子关联的东西,在你的例子中是“喜欢”
是的,当您使用update\\u post\\u元函数时,您的wp\\u Posteta表应该得到修改。

这是wp\\U Posteta表的结构

CREATE TABLE IF NOT EXISTS `wp_postmeta` (
  `meta_id` bigint(20) unsigned NOT NULL,
  `post_id` bigint(20) unsigned NOT NULL DEFAULT \'0\',
  `meta_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `meta_value` longtext COLLATE utf8mb4_unicode_ci
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
meta\\u id只是一个内部id,post\\u id将是您添加元数据或额外信息的帖子id
meta\\u key将是您案例中新信息的关键字,类似于“likes”
meta\\u value将是您案例中的值,将是用户id

因此,对于任何帖子,您都可以有多行的赞,每行对应于每个喜欢该帖子的用户

或者,如果你只是想保存喜欢的数量,而不关心用户。您可以像您所说的“like\\u count”那样使用元键,并在每次有人喜欢该帖子时更新该值。

相关推荐

Reducing Database Query Time

在这里寻找一些建议。有一位客户已经在WooCommerce上工作了大约一年半。我们为他们建了一个新网站。他们开始增加一条新的家具生产线。每个项目有700-800个产品变体组合。由于从生产线中添加了大约8个新产品,当您在管理中查看产品列表时,加载需要花费很长时间。如果您快速编辑一个产品,并说将其添加到第二个类别,然后单击“更新”,则完成查询平均需要10.2-10.8秒(根据查询监视器)。意识到有700-800个变体需要迭代,如果可以理解的话,可能需要更长的时间。我已经恢复到2017主题,禁用了除woocom