WP_SET_OBJECT_TERMS是否创建与修订的关系?

时间:2012-06-29 作者:Neil

我有一个自定义的帖子类型“albums”。它是一种分类法,“album\\u artist”。我试图通过编程将艺术家添加到该分类法中,在一个连接到save\\u post的函数中使用wp\\u set\\u object\\u术语。

function get_album_data($post_id) {
    // CODE REMOVED FOR BREVITY: IMPORT DATA FROM EXTERNAL SOURCE, PARSE VARS
    wp_set_object_terms( $post_id, $album_artist_name, \'album_artist\', true );
    update_post_meta ($post_id, \'Release Date\', $release);
}
add_action( \'save_post\', \'get_album_data\', 1001 );
我使用“true”来表示在一张编辑专辑中有不止一位艺术家的情况(想想“21首原创歌曲21位原创明星”)。

查看数据库中的wp\\u terms、wp\\u term\\u关系和wp\\u term\\u分类表,我看到的是:

在wp\\U术语中,术语的创建是正确的,有正确的鼻涕虫(即“警察”得到警察的鼻涕虫,而term\\u id 482)在wp\\u term\\u分类法中,术语显示在正确的分类法下(即term\\u taxonomy\\u id 506有term\\u id 482和album\\u Artister的分类法)在wp\\u term\\u关系中,term\\u taxonomy\\u id 506显示为object\\u id 2448,对吗?遗憾的是,没有。因为object\\u id 2448指的是POST 2448,它实际上是2447的修订版。当我查看wp\\u postmeta表时,“release\\u date”元已更新为2447,而不是2448。

因此,WP似乎与错误的帖子建立了关系。这就是为什么,我想,艺术家不会像我进入“艺术家”元框并点击“警察”复选框那样出现在我的专辑页面上。

然而,it seems to treat the $post_id variable differently in a update_post_meta versus a wp_set_object_terms. 因为这两个语句在函数中实际上是相邻的,但是$post\\u id变量对不同的函数意味着不同的东西。

我如何强制WP建立术语和父项之间的关系,而不是修订?

1 个回复
SO网友:Rarst

使用wp_is_post_revision() 将为您提供false 如果帖子不是修订版(在这种情况下,只需像往常一样使用它)或实际的帖子ID来代替修订版。

结束

相关推荐

get_terms of post->id

我需要一种方法来使用get\\u术语,并让它只获取当前页面的分类法。实例http://sitename.com/genre/hip_hop 只会抓住那些还附加了嘻哈风格的分类法。wp\\u get\\u object\\u terms几乎适用于我,但不会像get\\u terms那样循环。这是我现在拥有的<?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); $cam_brands = g