【问题标题】:WP post_updated $post_after, $post_before showing same product categoriesWP po​​st_updated $post_after, $post_before 显示相同的产品类别
【发布时间】:2020-12-08 17:02:19
【问题描述】:

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

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

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

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

我尝试使用 $post_after, $post_before 检查产品是否曾经具有“Willhaben”类别,然后重新构建提要,但 $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”类别,因此未创建提要...

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

非常感谢您的宝贵时间,我将不胜感激,谢谢!

【问题讨论】:

    标签: php wordpress woocommerce hook-woocommerce wordpress-hook


    【解决方案1】:

    是的@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;
        }
    

    【讨论】:

      【解决方案2】:

      如果您无法确定差异,请使用此方法:

      update_post_meta($post_ID, 'is_feed', 1)
      

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

      update_post_meta 应该在函数的末尾。在开始时检查它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-10
        相关资源
        最近更新 更多