函数用于在具有相同插件的自定义帖子被丢弃时删除术语

时间:2012-12-05 作者:drivebass

我有一个功能,每当我在自定义帖子类型“美术家”中添加新帖子时,它都会在自定义分类法“美术家”中添加一个同名的新术语。

function add_artist_category_automatically($post_ID) {
global $wpdb;
if(!has_term(\'\',\'byartist\',$post_ID)){
    $cat = get_the_title($post_ID);
    wp_set_object_terms($post_ID, $cat, \'byartist\');
    wp_set_object_terms($post_ID, NULL, \'byartist\' );
}
}
add_action(\'publish_artists\', \'add_artist_category_automatically\');
现在,我想要一个函数,每当我从“艺术家”自定义帖子中丢弃帖子时,它都可以删除与自动添加函数创建的相同slug的术语。我还没有做到这一点:

function delete_artist_term_automatically($post_ID) {
global $wpdb;
    $catigoria = get_the_title($post_ID);
    $theterm = term_exists($catigoria, \'byartist\');
    wp_delete_term($theterm->term_id, \'byartist\');
}
add_action(\'trashed_artists\', \'delete_artist_term_automatically\');
更新:在获得帖子名称而非标题后,我现在使用slug的get\\u term\\u。但这似乎不太管用。我不确定这是否是获取term\\u id的正确方法。我还删除了$wpdb。

function delete_artist_term_automatically($post_ID) {
    $cat = get_post($post_ID);
    $termslug = $cat->post_name;
    $theterm = get_term_by(\'slug\', $termslug, \'byartist\');
    wp_delete_term($theterm->term_id, \'byartist\');
}
add_action(\'deleted_artists\', \'delete_artist_term_automatically\');

1 个回复
最合适的回答,由SO网友:28inch 整理而成

你知道你的代码在哪里失败了吗?吊钩是否正常运行?可以肯定的是,term\\u exists()返回的ID不是对象。此外,根本不需要wpdb美元。

wp_delete_term($theterm, \'byartist\');

结束

相关推荐

WordPress是否限制Post Meta或Terms的插件名称的长度?

WordPress Codex指出,帖子类型名称和分类名称对slug名称有限制。Register Post Type -- 最多20个字符,不能包含大写字母或空格Register Taxonomy -- 分类的名称。名称应为插入形式(不得包含大写字母或空格),长度不得超过32个字符(数据库结构限制)</然而,WordPress Codex没有说明Post Meta或Terms是否对slug名称有限制。Add Post Meta -- 无缓动限制Insert Term -- 无缓动限制</这能得