更新特定类别的帖子元字段

时间:2018-06-05 作者:Mangal

我在WordPress中有一些由theme创建的元字段,我想使用php对其进行更新。

元字段存储url,我想在自定义元的当前url之后添加一些字符串。

我试过这些方法Assign/update the custom field value for all posts

并进行了更改

\'post_category\' => array(14,16,19);
选择特定类别,但它编辑了所有类别的所有帖子。

并使用此方法更改元字段,但它删除了url和changet字段。

$dealcode = "&deal_code=coupon";
    $urlvalue = get_post_meta( $post->ID, \'metakey\', false);
    $urlvalue = $urlvalue . $dealcode;
    update_post_meta( $post->ID, \'metakey\', $urlvalue );
请任何人都能解决这个问题。谢谢

1 个回复
SO网友:Krzysiek Dróżdż

好的,这个答案中有一点猜测,因为您只发布了部分代码,但是。。。我假设您的代码如下所示:

$args = array(
    \'post_type\' => \'post\',
    \'post_status\' => \'publish\',
    \'posts_per_page\'   => -1,
    \'post_category\' => array(14,16,19)
);
$posts = get_posts($args);
foreach ( $posts as $post ) {
    $dealcode = "&deal_code=coupon";
    $urlvalue = get_post_meta( $post->ID, \'metakey\', false);
    $urlvalue = $urlvalue . $dealcode;
    update_post_meta( $post->ID, \'metakey\', $urlvalue );
}
如果是,那么问题就在于这一行:

\'post_category\' => array(14,16,19);
没有post_category argument for WP_Query...

正确的参数是category__in, 因此,您的代码应该如下所示:

$args = array(
    \'post_type\' => \'post\',
    \'post_status\' => \'publish\',
    \'posts_per_page\'   => -1,
    \'category__in\' => array(14,16,19)
);
$posts = get_posts($args);
foreach ( $posts as $post ) {
    $dealcode = "&deal_code=coupon";
    $urlvalue = get_post_meta( $post->ID, \'metakey\', false);
    $urlvalue = $urlvalue . $dealcode;
    update_post_meta( $post->ID, \'metakey\', $urlvalue );
}
另外,由于您只使用ID,所以获取完整的帖子是没有意义的。如果您使用fields => \'ids\' 在您的查询中。

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在