【发布时间】:2014-04-25 03:10:21
【问题描述】:
您好,我认为当我们删除父类别时,所有子类别也会被删除,但并没有删除。这是wordpress中的错误吗?有没有我们可以从 wordpress 得到的参考,这是他们的实现?感谢目前,我使用的是 3.8.1 wordpress 版本。请指教。谢谢!
【问题讨论】:
标签: wordpress blogs categories
您好,我认为当我们删除父类别时,所有子类别也会被删除,但并没有删除。这是wordpress中的错误吗?有没有我们可以从 wordpress 得到的参考,这是他们的实现?感谢目前,我使用的是 3.8.1 wordpress 版本。请指教。谢谢!
【问题讨论】:
标签: wordpress blogs categories
这不是 bug,是 WordPress 实现的,删除父类别后子类别仍然存在。
但是,如果您还需要删除子类别,您可以使用 WordPress 挂钩“delete_category”来执行您的自定义操作。欲了解更多信息,请查看this link
【讨论】:
只需为 WooCommerce 的产品类别执行此操作,就可以了:
add_action( 'pre_delete_term', 'prefix_pre_delete_term', 10, 2 );
function prefix_pre_delete_term( $term, $taxonomy ) {
if ( $taxonomy === 'product_cat' ) {
$term_children = get_term_children( $term, $taxonomy );
if ( !empty( $term_children ) ) {
foreach ( $term_children as $term_child ) {
wp_delete_term( $term_child, $taxonomy );
}
}
}
}
如您所见,我添加了一个条件来仅使产品类别发生这种行为。如果您删除条件分类法,它将适用于您网站的所有分类法。
如果您在所有术语的层次结构中有很多子类别或项目,则结束进程可能需要相当长的时间(执行时间超时和内存限制耗尽是某些可能性)。
请注意,无需迭代,因为每次wp_delete_term() 调用都会执行挂钩。
另外请注意,为了让前端在单击“删除”时删除类别及其子类别,需要一些额外的 javascript 代码。
【讨论】: