wp_find_hierarchy_loop()
云策文档标注
概述
wp_find_hierarchy_loop() 是一个 WordPress 核心函数,用于检测层次结构中的循环依赖。它通过回调函数映射对象 ID 到父 ID,并返回循环中所有成员的 ID 数组。
关键要点
- 函数接受一个回调函数 $callback,用于获取对象的父 ID。
- 参数 $start 指定开始检查循环的 ID,$start_parent 可指定 $start 的父 ID 以覆盖回调。
- 返回值为数组,包含循环中所有成员的 ID;若无循环则返回空数组。
- 内部使用 wp_find_hierarchy_loop_tortoise_hare() 函数,基于“龟兔赛跑”算法检测循环。
- 常用于检查术语或文章层次结构中的循环,如 wp_check_term_hierarchy_for_loops() 和 wp_check_post_hierarchy_for_loops()。
代码示例
function wp_find_hierarchy_loop( $callback, $start, $start_parent, $callback_args = array() ) {
$override = is_null( $start_parent ) ? array() : array( $start => $start_parent );
$arbitrary_loop_member = wp_find_hierarchy_loop_tortoise_hare( $callback, $start, $override, $callback_args );
if ( ! $arbitrary_loop_member ) {
return array();
}
return wp_find_hierarchy_loop_tortoise_hare( $callback, $arbitrary_loop_member, $override, $callback_args, true );
}
原文内容
Finds hierarchy loops using a callback function that maps object IDs to parent IDs.
Parameters
$callbackcallablerequired-
Function that accepts ( ID, $callback_args ) and outputs parent_ID.
$startintrequired-
The ID to start the loop check at.
$start_parentintrequired-
The parent_ID of $start to use instead of calling $callback( $start ).
Use null to always use $callback. $callback_argsarrayoptional-
Additional arguments to send to $callback.
Default:
array()
Source
function wp_find_hierarchy_loop( $callback, $start, $start_parent, $callback_args = array() ) {
$override = is_null( $start_parent ) ? array() : array( $start => $start_parent );
$arbitrary_loop_member = wp_find_hierarchy_loop_tortoise_hare( $callback, $start, $override, $callback_args );
if ( ! $arbitrary_loop_member ) {
return array();
}
return wp_find_hierarchy_loop_tortoise_hare( $callback, $arbitrary_loop_member, $override, $callback_args, true );
}
Changelog
| Version | Description |
|---|---|
| 3.1.0 | Introduced. |