_wp_filter_build_unique_id

函式
_wp_filter_build_unique_id ( $hook_name, $callback, $priority )
Access
Private
引數
  • (string) $hook_name Unused. The name of the filter to build ID for.
    Required:
  • (callable|string|array) $callback The callback to generate ID for. The callback may or may not exist.
    Required:
  • (int) $priority Unused. The order in which the functions associated with a particular action are executed.
    Required:
返回值
  • (string) Unique function ID for usage as array key.
定義位置
相關方法
wp_unique_idwp_filter_object_listwp_filter_wp_template_unique_post_slugwp_filter_oembed_result_http_build_query
引入
2.2.3
棄用
-

_wp_filter_build_unique_id: 這個函式用來為一個WordPress過濾器生成一個唯一的ID。過濾器被用來修改WordPress中的資料,這個函式確保每個過濾器有一個唯一的ID。

構建唯一的ID,用於儲存和檢索。

序列化回撥的老方法引起了一些問題,這個函式就是解決方案。它的工作原理是檢查物件並在類中建立一個新的屬性,以跟蹤物件和需要新增的同一類的新物件。

它還允許在物件改變類的屬性後,為其刪除動作和過濾器。可以在你的類中包含$wp_filter_id這個屬性,並將其設定為”null”或一個數字來繞過這個變通方法。然而,這將阻止你新增新的類,任何新的類都將覆蓋之前同一類的鉤子。

函式和靜態方法的回撥只是作為字串返回,不應該有任何速度上的損失。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
function _wp_filter_build_unique_id( $hook_name, $callback, $priority ) {
if ( is_string( $callback ) ) {
return $callback;
}
if ( is_object( $callback ) ) {
// Closures are currently implemented as objects.
$callback = array( $callback, '' );
} else {
$callback = (array) $callback;
}
if ( is_object( $callback[0] ) ) {
// Object class calling.
return spl_object_hash( $callback[0] ) . $callback[1];
} elseif ( is_string( $callback[0] ) ) {
// Static calling.
return $callback[0] . '::' . $callback[1];
}
}
function _wp_filter_build_unique_id( $hook_name, $callback, $priority ) { if ( is_string( $callback ) ) { return $callback; } if ( is_object( $callback ) ) { // Closures are currently implemented as objects. $callback = array( $callback, '' ); } else { $callback = (array) $callback; } if ( is_object( $callback[0] ) ) { // Object class calling. return spl_object_hash( $callback[0] ) . $callback[1]; } elseif ( is_string( $callback[0] ) ) { // Static calling. return $callback[0] . '::' . $callback[1]; } }
function _wp_filter_build_unique_id( $hook_name, $callback, $priority ) {
	if ( is_string( $callback ) ) {
		return $callback;
	}

	if ( is_object( $callback ) ) {
		// Closures are currently implemented as objects.
		$callback = array( $callback, '' );
	} else {
		$callback = (array) $callback;
	}

	if ( is_object( $callback[0] ) ) {
		// Object class calling.
		return spl_object_hash( $callback[0] ) . $callback[1];
	} elseif ( is_string( $callback[0] ) ) {
		// Static calling.
		return $callback[0] . '::' . $callback[1];
	}
}

常見問題

FAQs
檢視更多 >