Wordpress 使用条件更新自定义字段

Wordpress update custom field with condition

我只想更新(更改)自定义字段(徽标)值,前提是另一个自定义字段具有规定的条件,并且只有自定义字段 "shop" 是 "Amazon"。 我有这个查询

UPDATE `wp_postmeta` SET `meta_key`="logo",`meta_value`="http://www.mywebsite.com/wp-content/uploads/logo-amazon.png" WHERE `meta_key` LIKE 'shop' AND `meta_value` LIKE 'Amazon'

但它不起作用,它在 table 中添加了一个新行(我不知道如果我说更新...)。能否请你帮忙?提前致谢

您的查询逻辑错误:您试图更改存储商店价值的元数据的键和值。

你要做的是:

UPDATE
  `wp_postmeta` p1
  INNER JOIN `wp_postmeta` p2
  ON p1.post_id = p2.post_id
SET
  p2.meta_value="http://www.mywebsite.com/wp-content/uploads/logo-amazon.png" 
WHERE
  p2.meta_key LIKE 'shop' AND p2.meta_value LIKE 'Amazon' AND
  p1.meta_key = "logo"

它将对更新进行内部连接,以将元 shop 设置为 Amazon 的帖子 ID 设置为 p2,并更新来自 [=] 的所有元15=] 具有元键 logo.

虽然考虑到您使用的是 Wordpress,但您可以使用更简单的方法来做到这一点:

$posts = get_posts(array(
  'meta_query' => array(
    array(
      'key' => 'shop',
      'value' => 'Amazon',
    )
  )
));
foreach($posts as $post) {
  update_post_meta($post->ID, 'logo', 'http://www.mywebsite.com/wp-content/uploads/logo-amazon.png');
}