为 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_id
和post_type
Book 插入数据库默认值0。
基本上我需要使用post_id
,使用post_id
将post_id
、meta_key
和meta_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的主要内容,如果未能解决你的问题,请参考以下文章