WP post_updated $post_after, $post_before 显示相同的产品类别

WP post_updated $post_after, $post_before showing same product categories

我正在尝试在更新某个产品类别的产品后自动更新 xml 供稿...

我发现我可以使用 post_updated 钩子来做到这一点。

该 Feed 仅包含“Willhaben”类别的产品。因此,每当我从产品中删除类别“Willhaben”时,我都需要更新 Feed 以便使 Feed 保持最新...

我的问题是,在我从 Feed 中删除类别后,post_updated 挂钩不再触发,因为我添加了一个 if 以便在产品没有类别“Willhaben”时不更新 Feed " 得到更新,以避免过载。

我尝试使用 $post_after、$post_before 检查产品是否曾经有类别“Willhaben”,然后重建 Feed,但是 $post_after、$post_before 始终为该特定产品提供完全相同的类别列表...

这是我的代码:

function wpdocs_run_on_transition_only( $post_ID, $post_after, $post_before ) {
   if(has_term( 1467, 'product_cat', $post_before ) || has_term( 1467, 'product_cat',  $post_after)) {
      create_gebraucht_feed(true);
      return;
   }
}
add_action( 'post_updated', 'wpdocs_run_on_transition_only', 10, 3 );

因为类别列表始终相同,所以我无法确定产品是否具有类别“Willhaben”,因此不会创建 Feed...

我希望我的意思很清楚...这里有人知道我做错了什么吗?我已经面对这个问题好几个小时了,不知道该怎么办了...

非常感谢您抽出宝贵的时间,非常感谢您的帮助,谢谢!

也许如果您不能确定差异,请使用此宣传:

update_post_meta($post_ID, 'is_feed', 1)

因此,如果您更新 post 并且它不包含所需的类别,则将 is_feed 更新为 0。

update_post_meta 应该在函数的末尾。开头打勾

是的@RomkaLTU!感谢很多对我有用的东西,这是我最终得到的:

   if ( get_post_meta($post_ID, 'is_feed', true) == 1 || has_term( 1467, 'product_cat', $post_after )) {
        create_gebraucht_feed(true);
        
        if(!has_term( 1467, 'product_cat', $post_after )) {
            update_post_meta($post_ID, 'is_feed', 0);
        }
        return;
    }