在创建元数据集时,是否必须为数据创建DB字段?

时间:2014-10-19 作者:sam

我第一次接触到元盒,在阅读完它们之后,我的一个主要问题是,是否需要在DB中指定字段来存储输入的数据。i、 e.如果您的代谢箱带有:

标题<input><textfeild><boolean>它们是否添加到数据库中存储为类似json的现有字段中?或者,您还必须在DB中为您在后端创建的字段创建字段吗?我知道这似乎是一个奇怪的问题,但在阅读了几篇文章和文档后,他们似乎只是略过了这一点。。这使我相信这不是必需的/是以不同的方式处理的。

2 个回复
SO网友:matr07

添加元盒时,元盒本身不会保存在数据库中。它是从编写的插件代码中加载的,然后由您用适当的值填充它。

您不必在数据库中创建其他字段。有一个功能:

update_post_meta($post_id, $meta_key, $meta_value);
在您的情况下,您可以执行以下操作:

update_post_meta($postId, "my_custom_metabox_title", $titleValue);
update_post_meta($postId, "my_custom_metabox_desc", $desc);
update_post_meta($postId, "my_custom_metabox_forsale", $forSale);
这将更新(或添加,如果还没有)表中的数据wp_postmeta 其中包含以下列:

  • meta_id - 表的主键post_id - 帖子idmeta_key - 在第二个参数中传递哪个键(例如:“my\\u custom\\u metabox\\u title”)
  • meta_value - 在上述函数的第三个参数中传递的值。如果值是一个数组或对象,它会将数据保存为一个序列化字符串,一旦数据在数据库中,您就可以使用另一个函数来获取数据:

    $customTitle = get_post_meta($postId, "my_custom_metabox_title", true);
    $customDesc = get_post_meta($postId, "my_custom_metabox_desc", true);
    $forSale = get_post_meta($postId, "my_custom_metabox_forsale", true);
    
    该函数接受以下内容:

    postId-post的postId元键(可选)-要检索的元数据的键-如果省略,它将返回关联数组中的所有元数据(数组键将映射到元键)

  • 单个(布尔可选)-如果设置为true,它将基于键返回第一个对象/字符串。如果它是序列化数据,则返回的对象将被取消序列化。如果设置为false,它将以数组形式返回结果。如果只有一个结果,则结果将为$result[0]

SO网友:kaiser

metabox只是UI的一部分。您可以在没有元框的情况下拥有其他/元数据。您可以有一个元框,而无需为帖子类型内容提供额外的/元数据。可以在元框中渲染所需的任何内容。

添加到帖子的元数据通过get_post_meta(), update_post_meta(), 等等(在本网站的其他问答中深入阅读元数据)。他们不必在任何地方都有视觉表现。

Post元数据通过现有API(不是验证和清理,而是CRUD部分)进行处理。并且保存的数据将作为净化值或每行一个条目保存到post元表中。

结束

相关推荐

在我的定制贴子类型后端添加一个metabox短码“PayPal Accept Payment”

我已经创建了一本带有annotum主题的科学杂志,现在我希望用户在发布文章时付费,但当他们单击publish以使用paypal付费时,我没有编程技能来做到这一点,所以我想在我的自定义帖子类型中创建一个元框:文章中包含一个位于文章帖子类型管理区域的WP Easy paypal Payment Accept小部件。在dashboard admin区域中,我通过以下代码创建了此小部件(带有短代码:Paypal_payment_accept();) : function wpc_dashboard_widget