我正在尝试在更新某个产品类别的产品后自动更新xml提要...
我发现我可以用post_updated钩子来实现这一点。
提要只包含类别"Willhaben"的产品。所以每当我从产品中删除类别"Willhaben"时,我需要更新提要,以便使提要保持最新...
我的问题是,当我从我的feed中删除类别后,post_updated钩子不再触发,因为我添加了一个if,以便在没有类别"Willhaben"的产品更新时不更新feed,以避免过载。
我尝试使用$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",因此不会创建提要...
我希望大家都明白我的意思......在座的各位知道我做错了什么吗?我已经面对这个问题好几个小时了,不知道该怎么办了......
谢谢你抽出时间,我很感激你的帮助,谢谢!
3条答案
按热度按时间ljsrvy3e1#
是的@RomkaLTU!谢谢你为我做了很多工作,这是我最终得到的:
bf1o4zei2#
如果你不能确定两者的区别,可以使用以下方法:
因此,如果你更新了一篇文章,而它不包含所需的类别,那么is_feed就会更新为0。
update_post_meta
应该在函数的末尾。请在开头选中它。ui7jx7zq3#
我也有同样的问题:变量
$post_before
和$post_after
具有相同的类别,尽管我在保存时更新了类别。我在其他地方读到过
post_updated
-hook运行得太晚,以至于两个变量都拥有相同的类别。我最终使用了pre_post_update
-hook,如下所示: