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

时间:2014-11-10 16:22:22

标签: php mysql sql wordpress

我刚刚为特定post_type添加了自定义字段。让我们说帖子类型是" Book"。

我想使用post_id Book为每个post_type插入数据库的默认值0。

基本上我需要使用post_idpost_id添加post_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 个答案:

答案 0 :(得分:2)

过去我必须做这样的工作,我坚持使用Wordpress Foundations。在向帖子添加数据时,我会远离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;

?>

刚刚测试了代码,它正在运行。