如果只有键和值不存在,则添加帖子元数据

时间:2018-05-27 作者:Calvin

在WordPress帖子中,键为“client”的自定义元数据存在这些多个值

client=>Andy
client=>Johny
client=>April
我只想在其值不存在时添加新元数据,

需要的结果:客户端=>Andy将不会被添加,因为它已经存在。

客户端=>将添加Susan,因为它不存在帖子现在将具有这些元数据值

client=>Andy
client=>Johny
client=>April
client=>Susan

2 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

好的,那么您有一些使用add_post_meta 您想让它只添加唯一的值。

这里的问题是add_post_meta 完全按照它的名字所说的去做——它添加了一个post元值。调用的函数有第四个参数unique, 但它是基于关键而非价值的。

所有这些都意味着你必须自己做检查。。。因此,您必须使用get_post_meta 并检查是否已经存在具有给定值的元。。。

那么这是什么样子呢?

代码中的某个地方有一行如下所示:

add_post_meta( $post_id, $meta_key, $meta_value );
只需将其更改为:

$existing_pms = get_post_meta( $post_id, $meta_key );
if ( ! in_array( $meta_value, $existing_pms ) ) {
    add_post_meta( $post_id, $meta_key, $meta_value );
}

SO网友:DaveyJake

我知道这篇文章有点过时,但为了以防万一,我编写了一个函数来检查给定文章附带的任何预先存在的元数据。

/**
 * Check if post has pre-existing metadata.
 *
 * @see metadata_exists()
 *
 * @param int    $post_id  The post ID.
 * @param string $meta_key The meta key to look for.
 *
 * @return bool            True if key is found. False if not.
 */
function wpse304585_post_meta_exists( $post_id, $meta_key ) {
    if ( metadata_exists( \'post\', $post_id, $meta_key ) ) {
        return true;
    }

    return false;
}

结束

相关推荐

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

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