为 post_type = ?? 的每个 id 添加元值WordPress

Posted

技术标签:

【中文标题】为 post_type = ?? 的每个 id 添加元值WordPress【英文标题】:Adding meta values for each id where post_type = ?? wordpress 【发布时间】:2014-11-10 16:22:21 【问题描述】:

我刚刚向特定的post_type 添加了一个自定义字段。假设帖子类型是“书”。

我想为每个post_idpost_type Book 插入数据库默认值0。

基本上我需要使用post_id,使用post_idpost_idmeta_keymeta_value 添加到postmeta 表中。

一些伪插入语句可能如下所示:

INSERT INTO postmeta WHERE (post_type = "Book" FROM other_table GET post_id) post_id = post_id, meta_key = newfield, meta_value = 0

另一种解决方案可能是更改我在 wordpress 中查询帖子的方式:

当我使用 meta_key 参数查询时,目前只有填写了特定 meta_key 的帖子才会被拉取。有没有办法显示也没有这个 meta_key 的帖子?我需要它来对有 meta_key 的帖子进行排序。

编辑:

我在 wp 数据库中试过这个:

INSERT INTO wp_postmeta(`post_id`,`meta_key`,`meta_value`) VALUES((SELECT ID FROM wp_posts tb WHERE tb.post_type = 'support'),'category_order','0')

这基本上是我想要做的,除了它应该允许多个值。目前没有。

【问题讨论】:

【参考方案1】:

过去我不得不做这样的工作,我坚持使用 Wordpress 基金会。我会在向帖子添加数据时逃避 SQL。

基本上我做了一个页面模板,在里面我只是循环帖子并使用 update_post_meta,如下所示:

<?php 

$args = array(
    'post_type'=> 'book',
);

query_posts( $args );

// the Loop
while (have_posts()) : the_post();
//update the post meta, while looping
update_post_meta($post->ID, 'fieldname', 0);

endwhile;

?>

刚刚测试了代码,它正在工作。

【讨论】:

很酷的解决方案。我最终只使用了一个自定义查询,它也有效。不过我同意,在处理 wordpress 时最好不要手动操作数据库。 那么您是否将其保存在functions - 然后上传到服务器,仔细检查它是否有效,然后从functions 中删除代码,这样它就不会覆盖修改后的fieldname 值? 或者您应该将其添加为init 上的操作? 嗨@RobBenz。不,您创建一个新的页面模板,将其分配给管理区域中的页面,每次打开该页面时都会触发 update_post_meta 事件。

以上是关于为 post_type = ?? 的每个 id 添加元值WordPress的主要内容,如果未能解决你的问题,请参考以下文章

为堆叠频率表中的每个组添加一列总 n

Prisma:如何在查询返回中添加一列?

如何在 Angular 4 中为表格添加分页?

在Android应用程序中向GridView添加一组按钮

使用 WooCommerce 产品搜索搜索特定 post_type 表单 post_type 列时出错

如何添加多对多的额外数据透视列?