我的代码有问题。我试图从使用该类别的帖子中删除一个类别,然后在保存帖子时添加相同的类别。
例如,如果我有一篇帖子使用了;第一次发布“;,保存使用该类别的任何帖子时,将删除该帖子,并将正在保存的新帖子添加到该类别中;第一篇帖子;。
我正在使用的代码在保存帖子时会添加类别,但之前使用该类别的帖子不会被删除。
这是我的代码:
function save_category($post_ID){
// get all posts using \'First post\' category
$categories = wp_get_object_terms( $post_ID, \'First post\' );
// query to get posts using \'First post\' category
if ($categories) {
foreach ($categories as $key => $category)
// if post is using \'First post\' category then remove the category
if ($category->name == "First post") {
wp_remove_object_terms( $post_ID, \'First post\', \'category\' );
}
return;
}
// Add \'First post\' to post when saving
wp_set_post_categories( $post_ID, get_cat_ID( "First post" ) );
}
add_action(\'save_post\', \'save_category\');
最合适的回答,由SO网友:tiago calado 整理而成
您的foreach没有括号或分号,这可能就是为什么。也不是很清楚。这里是正确识别的代码,可能只有一个,foreach结束括号可能必须在返回之后,就像下面的代码一样,或者可能就在返回之前。如果此代码不起作用,请剪切并粘贴“;退货"E;在“之后”;endforeach"E;。
function save_category($post_ID){ // get all posts using \'First post\' category
$categories = wp_get_object_terms( $post_ID, \'First post\' );
if ($categories) { // query to get posts using \'First post\' category
foreach ($categories as $key => $category) :
if ($category->name == "First post") { // if post is using \'First post\' category then remove the category
wp_remove_object_terms( $post_ID, \'First post\', \'category\' );
}
return;
endforeach;
}
wp_set_post_categories( $post_ID, get_cat_ID( "First post" ) ); // Add \'First post\' to post when saving
}
add_action(\'save_post\', \'save_category\');