wordpress 如何使用LIKE运算符获取不存在的帖子元数据

x4shl7ld  于 2022-11-02  发布在  WordPress
关注(0)|答案(1)|浏览(159)

我想得到那些post_ meta不存在的帖子。问题是其中一个meta需要使用LIKE,所以我想确定first_key不存在,并且second_key_%(可以包括second_key_1second_key_2second_key_3等)也不存在。但是,compare不能同时为NOT EXISTSLIKE
下面是我所做的:

add_action('pre_get_posts', function ($admin_query) {
  $custom_meta = array(
    'relation' => 'AND',
    array(
     'key' => 'first_key',
     'compare' => 'NOT EXISTS',
    ),
    array(
     'key' => 'second_key_%', // Issue is here
     'compare' => 'NOT EXISTS',
    )
  );

  $admin_query->set('meta_query', $custom_meta);
});
gywdnpxw

gywdnpxw1#

多亏了@CBroe,我可以用posts_where过滤器来做。

add_action('pre_get_posts', function ($admin_query) {
  add_filter('posts_where', function ($where) {
    $where .= " AND wp_posts.ID NOT IN
    (
      SELECT wp_postmeta.post_id
      FROM wp_posts, wp_postmeta
      WHERE (wp_postmeta.meta_key LIKE 'second_key_%' OR wp_postmeta.meta_key = 'first_key') AND
      wp_posts.ID = wp_postmeta.post_id
    )";

    return $where;
  });
});

相关问题